Query Redirects in HTTP, or rather, the lack of documentation thereof

Over the past few days, Mark [1] and I have been going back and forth about implementation details in Seminole [2]. It started out with a question about encoding URL (Uniform Resource Locator)s—when do you convert a space to %20 and when do you covert it to + (answer: you can always use %20 but you can only convert a space to a + in the query portion of a URL) but eventually got around to a point not covered in RFC-2616 (Hypertext Transfer Protocol-HTTP/1.1) [3].

I like your idea of storing the query separate in the HttpdRequest object. It's a good idea, and I think may fix a problem where we do redirects and forget to tack on the query string. For example:
Redirecting http://server/some/directory?stuff…> -to-…> http://server/some/directory/index.html?stuff
Probably doesn't work now.

“Email from Mark”

Only thing is, RFC-2616 doesn't cover this situation. Sure, it covers what to do when redirecting a POST (and even goes into mind-numbing detail about when and when not to convert a POST to a GET when redirecting, and how that interacts with proxy and caching servers) but not what to do when redirecting a GET with a query.

I did some tests with Apache [4], and from what I can see, if Apache generates the redirect (for example, http://www.example.net/path to http://www.example.net/path**/**) it passes along the query string (http://www.example.net/path?a=1&b=2 is redirected to http://www.example.net/path**/**?a=1&b=2) but if the redirect comes from the Redirect directive (for example, http://www.example.net/p.cgi to http://server.example.org/q.cgi), then the query portion of the URL is dropped entirely (http://www.example.net/p.cgi?a=1&b=2 is redirected to http://server.example.org/q.cgi—note the missing query string) and since the RFC (Request For Comments) is quite mum on what the correct behavior is, we're having to wing it for now.

[1] http://www.conman.org/people/myg/

[2] http://gladesoft.com/products/seminole/

[3] http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2616.html

[4] http://httpd.apache.org/

Gemini Mention this post

Contact the author