HTTP/1.1 pconns to 1.0 servers

HTTP/1.0 persistent connections are documented in RFC2068. One case  
that's not explicitly covered is when a HTTP/1.1 client sends a  
request to a HTTP/1.0 server without a Connection: keep-alive header.

My reading of 2068, 2616 and 2145 is that the fact that the client  
indicates HTTP/1.1 in the request advertises their support for  
persistent connections, and a HTTP/1.0 server (whether origin or  
proxy) may safely use a Content-Length delimited persistent response.

In my testing, two popular clients that advertise themselves as HTTP/ 
1.1 devices without sending a Connection token -- curl and Apple's  
Safari -- handle persistent connections from HTTP/1.0 servers very well.

However, the widely deployed Squid proxy cache <http://www.squid- 
cache.org/> does not behave in this manner; it requires a Connection:  
keep-alive header (or Proxy-Connection, but that's another  
discussion) in requests in order for them to persist.

In discussion on their mailing list*, it seems they believe that some  
HTTP/1.1 clients may not be able to handle a persistent connection to  
a HTTP/1.0 server that they didn't explicitly "ask for" with a  
Connection token.

What was the intent here? I can't imagine that it was the intent of  
the WG to require HTTP/1.1 clients to send Connection tokens in  
perpetuity for backwards compatibility.

Cheers,

* Starting at <http://www.squid-cache.org/mail-archive/squid-users/ 
200609/0546.html>; responses not yet in the archive.

--
Mark Nottingham
mnot@yahoo-inc.com

Received on Wednesday, 20 September 2006 17:09:29 UTC