HTTP自从1990年就开始使用。第一版,之后称为HTTP/0.9,是一个简单的跨网络的超文本数据转移协议,仅使用了单个请求方法GET并且没有元数据。HTTP/1.0,定义于RFC1945,添加了一系列请求方法和类MIME消息,允许元数据被转移以及修改这放置到请求/响应语义。然而,HTTP/1.1没有充分考虑分层代理的影响,缓存,长连接的需要或者基于名称的虚拟主机。为了使两个通信应用程序能够确定彼此的真实能力,不完全实现的自称为“HTTP / 1.0”的应用程序的激增进一步要求更改协议版本。
HTTP / 1.1通过包含更加严格的要求来实现可靠的实现,并保持与HTTP / 1.0的兼容性,只添加HTTP / 1.0接收者可以安全忽略的特性,或者只与HTTP / 1.1通知符合性的一方通信时发送。
HTTP/1.1被设计能支持之前的版本。一个通用目的的HTTP/1.1服务器应该能够理解任何合法的HTTP/1.0请求格式,以HTTP/1.1的消息适当的响应,其仅使用能够被HTTP/1.0的客户端理解(或者安全忽略)的特性。
由于HTTP/0.9没有在请求中支持头字段,所以它没有机制来支持基于名称的虚拟主机(资源通过检查主机头字段的选择)。任何实现了基于名字的主机的服务器应该禁用HTTP/0.9的支持。实际上,似乎是HTTP / 0.9的大多数请求实际上是由于客户端未能正确编码请求目标而造成的HTTP / 1.x请求的错误构建。