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
94 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.0
it certainly helped the interopability and compatibility problems, but version1.0
of the protocol simply assumed all HTTP software would be able to use it for their existing application, but now thatHTTP/1.0
has 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.0
they felt a need to increment the version number toHTTP/1.1
in order to prevent an implementation simply assuming the remote host supports a feature or not.Example
A good example is the
Host
header inHTTP/1.1
that allows for a web-server serving from a single IP address and port number to serve-up different websites based on theHost
header (as beforeHTTP/1.1
existed webservers could only serve one website per IP address, which is a problem).HTTP/1.0
does 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 theHost
header. But inHTTP/1.1
theHost
header was formerly added to the specification so if both the client and server declare they useHTTP/1.1
then the other end knows that they'll recognize theHost
header and handle it correctly.So in the
HTTP/1.0
days, with custom headers, this is how it would play out if a browser requestswww.example.com
if it were served from a Shared Webhost:As you can see, the browser got
not-actually-example.com
even though it asked forwww.example.com
, because the Web-server was usingHTTP/1.0
which does not recognize theHost
header, even though the web-browser was sending theHost
header (as an extension/experimental header). The browser software has no way of knowing ifnot-actually-example.com
is what the user wanted or not.