In addition, the proliferation of incompletely-implemented
applications calling themselves "HTTP/1.0" has necessitated a
protocol version change in order for two communicating applications
to determine each other's true capabilities.
What does this line mean in rfc2068
72 Views Asked by Maxim At
2
From the RFC:
Rephrased:
Before HTTP was standardised there were differences in implementations that meant they couldn't always communicate with each other correctly (e.g. certain web-browsers couldn't work with certain web-servers). The RFC article refers to these pre-standardisation implementations as using
HTTP/0.9.Rephrased:
After HTTP was standardised as
HTTP/1.0it certainly helped the interopability and compatibility problems, but version1.0of the protocol simply assumed all HTTP software would be able to use it for their existing application, but now thatHTTP/1.0has been in-use for a while the maintainers of the HTTP protocol specification saw that they need to extend HTTP to support these use-cases (e.g. proxies, caches, persistent connections, virtual-hosts) and while these things could be done using the built-in extension mechanisms inHTTP/1.0they felt a need to increment the version number toHTTP/1.1in order to prevent an implementation simply assuming the remote host supports a feature or not.Example
A good example is the
Hostheader inHTTP/1.1that allows for a web-server serving from a single IP address and port number to serve-up different websites based on theHostheader (as beforeHTTP/1.1existed webservers could only serve one website per IP address, which is a problem).HTTP/1.0does allow clients and servers to add their own custom headers, such asHost, however there is no way for the client or the server to know that the other end actually supports theHostheader. But inHTTP/1.1theHostheader was formerly added to the specification so if both the client and server declare they useHTTP/1.1then the other end knows that they'll recognize theHostheader and handle it correctly.So in the
HTTP/1.0days, with custom headers, this is how it would play out if a browser requestswww.example.comif it were served from a Shared Webhost:As you can see, the browser got
not-actually-example.comeven though it asked forwww.example.com, because the Web-server was usingHTTP/1.0which does not recognize theHostheader, even though the web-browser was sending theHostheader (as an extension/experimental header). The browser software has no way of knowing ifnot-actually-example.comis what the user wanted or not.