Re: pipelined client/server behaviour

>>> For Opera to use pipelining to a proxy the user must enable HTTP 1.1 
>>> for the proxy, and the proxy MUST respond with a HTTP 1.1 response 
>>> to the first request from Opera (which is sent using HTTP 1.0)
>>>
>>
>> This behaviour we have found causes havoc with a proxy that always 
>> responds with the same version number as the client sent in it's 
>> request.  I'd recommend actually honouring the user's configuration 
>> wishes in this respect and if they specify using HTTP/1.1 then don't 
>> send any HTTP/1.0 requests.
>
> The server/proxy should respond with the HTTP version it supports, no 
> matter what the client sends. See RFC 2145.
>
OK, I read the RFC.  I'm assuming it wasn't superseded by the later RFC 
2616?  Specifically para 2 of section 2 seems to be discussing the 
future existence of something like an Expects header.

I guess the approach is unique in this case because of other issues.  So 
we consider that the version tag is just an advertisement of protocol 
support of the sender of the message.  Makes sense I suppose since the 
transaction doesn't allow for pre-negotiation of anything let alone 
versions.

I'm picking the problems are more difficult upstream than downstream - 
which version to send?  Surely it's better to send an HTTP/1.0 request 
to an HTTP/1.1 server than vice versa?  RFC 2145 is pretty clear on this 
though. 

I think this could cause some issues though.  If a client knows a 
particular server is HTTP/1.0, and sends a request to it via an HTTP/1.1 
proxy, which then sends an HTTP/1.1 request to the server, then the 
server may not handle some of the tags the proxy sent, so proxies then 
need to start maintaining databases of known HTTP1.1 vs 1.0 servers.  
Seems to be a fundamental problem with the protocol if it requires 
agents to keep caches about behaviours of other agents.

How can an HTTP/1.0 client pretend to support the Connection tag?  it 
wasn't in the HTTP/1.0 spec was it?  So to the letter of the spec, the 
proxy shouldn't send a Proxy-Connection tag back to a client sending an 
HTTP/1.0 request anyway.  Which means that strictly speaking, NTLM isn't 
possible with strict HTTP/1.0.

> The reason Opera uses this approach is that we have seen too many 
> proxies that break if they get HTTP/1.1 in the request.

Surely that's why there's a setting to turn on and off http/1.1 through 
proxy?  I'm still a bit dubious about this approach.  When I saw Opera 
doing it, I have to admit to a fair amount of confusion.  I guess you 
guys are best placed to knowing what support issues it may be creating.

No other client we've tested takes the approach you've described.

Adrien

Received on Sunday, 1 April 2007 12:03:53 UTC