Sunday, February 16, 2003
Query Redirects in HTTP, or rather, the lack of documentation thereof
Over the past few days, Mark and I have been going back
and forth about implementation details in Seminole. It started
out with a question about encoding URLs—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.
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, 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 is
quite mum on what the correct behavior is, we're having to wing it for
now.
Don't shoot, we're Republicans!
Fifty years ago today, the Willie D as the Porter was nicknamed, accidentally fired a live torpedo at the battleship Iowa during a practice exercise. As if this wern't bad enough, the Iowa was carrying President Franklin D. Roosevelt at the time, along with Secretary of State, Cordell Hull and all of the country's WWII military brass. They were headed for the Big Three Conference in Tehran, where Roosevelt was to meet Stalin and Churchill. Had the Porter's torpedo struck the Iowa at the aiming pointy, the last 50 years of world history might have been quite different.
Via Jerry Pournelle, Don't shoot, we're Republicans!
Nothing much to add here, other than it's an amusing story and I'm finding it fun to think about what would have happened had the torpedo actually struck the Iowa. I don't think much would have happened in the long run—FDR would have most likely survived, been transported to another ship and still made Tehran, but still, there was that slight chance he would have been killed.
Even so, I don't think the outcome of the war would have been that much different; Truman still had to take over from FDR before the war was over.