[Prev][Next][Index][Thread]

Re: HTTP/1.1 vs HTTP/1.0 servers



Markku Savela writes:

> Which is in error? Is the server required to reply with HTTP/1.0, if it
> doesn't recognize the HTTP/x.x?

This is a bug in the gateway - the version of a HTTP application is the 
highest HTTP version number for which the application is compatible, in this 
case HTTP/1.0.

In HTTP/1.1 there is a status code (505) saying that the server or proxy is 
not willing to reply to a message of the same major version number. However, 
HTTP/1.0 should normally not be affected by a HTTP/1.1 request. The 
compatibility model in HTTP is that all HTTP messages with the same major 
version number can be parsed by the same HTTP engine. It may not all make 
sense but then the default behavior is to ignore the content it not 
otherwise specified.

> HTTP/1.0 spec takes great care to specify backwards compatibility, but
> seems to fail in specifying "forward compatibility". Does it state
> anywhere what a server should do if the request is for HTTP/x.y, where
> x.y is higher than servers version?
> 
> The section 3.1 (HTTP Version) of the HTTP 1.0 only spells out
> requirements for the servers as
> 
> 	HTTP/1.0 servers must: 
> 
> 	- recognize the format of the Request-Line for HTTP/0.9 and
> 	  HTTP/1.0 requests;
> 
> 	- understand any valid request in the format of HTTP/0.9 or
> 	  HTTP/1.0;
> 
> 	- respond appropriately with a message in the same protocol
> 	  version used by the client.

No, this is not true. Servers and proxies/gatewys should respond with a 
version which is equivalent to the request if this version is lower or equal 
to the version of the server/proxy itself. It must not in any case repond 
with a version that is higher than it is capable of handling. This would be 
false information as the response then indicates that the 
server/proxy/gateway is capable of doing something it isn't.

> Perhaps HTTP/1.1 and later will get this right. For now it seems that
> we are stuck with the fact that when client asks HTTP/1.1, some
> servers refuse to give back anything?

Actually, it is quite simple - even for HTTP/1.0 applications - if they follow the rule above. Then it is always for the most advanced application to down grade to the level of the lowest version number. In practice, this may not be the case and it may lead to problems upgrading to HTTP/1.1 applications.


-- 
Henrik Frystyk Nielsen, <frystyk@w3.org>
World Wide Web Consortium, MIT/LCS NE43-356
545 Technology Square, Cambridge MA 02139, USA



References: