- From: Adrien de Croy <adrien@qbik.com>
- Date: Mon, 02 Apr 2007 00:01:37 +1200
- To: "Yngve N. Pettersen (Developer Opera Software ASA)" <yngve@opera.com>
- CC: Adrian Chadd <adrian@creative.net.au>, Eric Lawrence <ericlaw@exchange.microsoft.com>, "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
>>> 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