I have a question about HTTP (HyperText Transport Protocol) for you. Okay. If you compile Seminole 2.14 [1] and go to a URL (Uniform Resource Locator) that is a directory with an index.html in it, you will find that (unlike Apache [2]), I instead just send out a temporary redirect to the /index.html URL instead of serving up the index.html as the directory URL.
Now, it seems that this works fine with all browsers except one: Microsoft Internet Explorer. Apparently a 302 Redirect causes MSIE to just display the redirect page.
Question from Mark [3] via email
The solution Mark found was to not send out the HTTP header Content-Type: and then MSIE would work properly. When I investigated though:
Very curious. Using MSIE 5.0 (original and SP2) if I went to:
http://www.example.net/testredirect
I got redirected. But if I go to
www.example.net/testredirect
I get the MSIE redirect page (and not the one from the web server!).
My reply to Mark's email
Mark then asked if it was a violation of RFC-2616 [4] to not send out the Content-Type: header. Nope.
>
```
7.2.1 Type
When an entity-body is included with a message, the data type of that
body is determined via the header fields Content-Type and Content-
Encoding. These define a two-layer, ordered encoding model:
entity-body := Content-Encoding( Content-Type( data ) )
Content-Type specifies the media type of the underlying data.
Content-Encoding may be used to indicate any additional content
codings applied to the data, usually for the purpose of data
compression, that are a property of the requested resource. There is
no default encoding.
Any HTTP/1.1 message containing an entity-body SHOULD include a
Content-Type header field defining the media type of that body. If
and only if the media type is not given by a Content-Type field, the
recipient MAY attempt to guess the media type via inspection of its
content and/or the name extension(s) of the URI used to identify the
resource. If the media type remains unknown, the recipient SHOULD
treat it as type "application/octet-stream".
```
§ 7.2.1 of RFC-2616 [5]
The SHOULD gets Mark off the hook for not sending out the Content-Type: header.
But then Mark also found:
Internet Explorer does not properly handle an HTTP/1.1 302 redirect returned from a proxy server or Internet server when the HTTP/1.1 302 redirect is sent to Internet Explorer in two separate TCP frames (one with the HTTP/1.1 302 redirect, and the other with a HTML body containing a page for the new location).
Internet Explorer Returns Error Message When Being Redirected [6]
Incredible. Not only is this for MSIE version FOUR but it still doesn't work properly for MSIE version FIVE.
Just gotta love MSIE …
[1] http://gladesoft.com/products/seminole/
[3] http://www.conman.org/people/myg/
[4] http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2616.html
[5] http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2616.html
[6] http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q193489&LNG=ENG&SA=ALLKB&FR=0