Coping with browsers (e.g. IE4) which ignore(?) 'Connection: close' HTTP header

Hi folks,

I'm developing a web proxy for Win95/NT and am having problems because
IE4.01 SP1 (Win95/NT) seems to either:

 * ignore the 'Connection: close' HTTP header completely (this header
tells the browser not to maintain a persistent connection with my proxy,
but rather to open a new socket for each request)

 * or not notice the 'Connection: close' HTTP header until it has
already issued a second request on the same socket


The scenario is:

   IE4 -> My Proxy -> 2nd Proxy (Squid) -> Web Server (IIS/4.0)


When my proxy receives a request on a socket and is subsequently
returning the result to IE4, it adds the 'Connection: close' header to
the response (if the original request was HTTP/1.1).

But IE4 seems to ignore this header (or else is issuing asynchronous
requests, e.g. see
http://lists.w3.org/Archives/Public/www-lib/1997AprJun/0023.html ) and
sends another request on the same socket, which my proxy ignores.

The good news - IE4 seems to eventually notice the 'Connection: close'
and resends the request that it had tried to send on the already open
socket. Sometimes it resends it on a brand spanking new socket (which my
proxy can handle fine).

But the bad news - IE4 sometimes resends the request on another
'previously used' socket, and again my proxy ignores the request. After
2 unsuccessful attempts, IE4 then gives up and reports an error
performing the request.


If i remove my proxy from the scenario and just have:

   IE4 -> Proxy (Squid) -> Web Server (IIS/4.0)

there seems to be no problem. Squid succeeds where my proxy fails (even
though i believe Squid does not support persistent connections either).
Anyone have any ideas why ?

Even if I turn off 'Use HTTP/1.1' in IE4, it does not help because even
if IE4 issues a HTTP/1.0 request, the Web server (IIS/4.0) returns a
response with a version of 1.1. One possible solution would be for my
proxy to always check that if the request version is 1.0, then the
response version is also 1.0, otherwise it should change it to be 1.0.
But this solution also requires each user to turn off 'Use HTTP/1.1' so
it's far from ideal.


Any ideas/tips/hints ?

Thanks in advance,
Gary Stephens
SSE

Received on Friday, 2 October 1998 07:25:14 UTC