Re: CGI module redirect defaults to 302 -- why?



On 04/29/2007 11:37 AM, Mott.Jeff@xxxxxxxxx wrote:
If the 302 status code is received in response to a request
other than GET or HEAD, the
user agent MUST NOT automatically redirect the request unless
it can be confirmed by the
user.
-- HTTP/1.1

For a CGI program that was requested from a POST form, the 302 message
seems to not be what I would want. But 303:

The response to the request can be found under a different URI
and SHOULD be retrieved
using a GET method on that resource. This method exists
primarily to allow the output of a
POST-activated script to redirect the user agent to a selected
resource. The new URI is not a
substitute reference for the originally requested resource.
HTTP/1.1

303 seems to be designed *exactly* for redirecting the browser after a CGI program has run. Why then does the CGI module return a 302 response by default?


CGI forms probably respond to GET requests at least as often as they respond to POST requests. Anyway, you are the programmer; you can specify a different status code if you want to.

Also, if you continue reading that section (§10.3.4 of RFC2616), you see this:

Note: Many pre-HTTP/1.1 user agents do not understand the 303 status. When interoperability with such clients is a concern, the 302 status code may be used instead, since most user agents react to a 302 response as described here for 303.

.



Relevant Pages

  • Re: Redirecting to another url with parameters using post method
    ... what CGI::redirect prints AFAIK)? ... "If the 307 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued." ...
    (perl.beginners)
  • CGI module redirect defaults to 302 -- why?
    ... If the 302 status code is received in response to a request ... The response to the request can be found under a different URI ... POST-activated script to redirect the user agent to a selected ...
    (comp.lang.perl.misc)
  • Re: Redirecting to another url with parameters using post method
    ... "If the 307 status code is received in response to a request other than ... the user agent MUST NOT automatically redirect the request ... POST request. ...
    (perl.beginners)
  • Re: WebControl/Cache-Control question
    ... the user agent, provided the user agent understands the header. ... The only thing I'd check is that you're setting this on the correct HTTP re- ... where the browser makes a second request that's separate to fetch the image. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: HttpWebRequest headers problem
    ... > I'm using a c# app to download zipped XML data from a 3rd party. ... How do I add the correct request headers here? ... HttpWebRequest.UserAgent to set the user agent. ...
    (microsoft.public.dotnet.languages.csharp)