0

资源

此外,
自称为“HTTP/1.0”的未完全实现的应用程序激增,需要
更改协议版本,以便两个通信应用程序
确定彼此的真实能力。

4

2 回答 2

2

来自 RFC:

自 1990 年以来,万维网全球信息倡议一直在使用 HTTP。HTTP 的第一个版本,称为 HTTP/0.9,是一种用于通过 Internet 传输原始数据的简单协议。

改写:

在 HTTP 标准化之前,实现上存在差异,这意味着它们不能总是正确地相互通信(例如,某些 Web 浏览器不能与某些 Web 服务器一起工作)。RFC 文章将这些预标准化实现称为使用HTTP/0.9.

RFC 1945 定义的 HTTP/1.0 通过允许消息采用类似 MIME 消息的格式来改进协议,其中包含有关传输的数据的元信息和请求/响应语义上的修饰符。然而,HTTP/1.0 没有充分考虑分层代理、缓存、持久连接的需求和虚拟主机的影响。此外,自称为“HTTP/1.0”的未完全实现的应用程序激增,需要更改协议版本,以便两个通信应用程序确定彼此的真实能力。

改写:

在 HTTP 标准化之后,因为HTTP/1.0它确实有助于解决互操作性和兼容性问题,但1.0协议的版本只是假设所有 HTTP 软件都能够将它用于现有应用程序,但现在HTTP/1.0已经使用了一段时间HTTP 协议规范看到他们需要扩展 HTTP 以支持这些用例(例如代理、缓存、持久连接、虚拟主机),虽然这些事情可以使用内置的扩展机制来完成,HTTP/1.0但他们觉得需要增加版本号,HTTP/1.1以防止实现简单地假设远程主机支持或不支持某个功能。

例子

一个很好的例子是Host标头,HTTP/1.1它允许从单个 IP 地址和端口号提供服务的 Web 服务器根据Host标头为不同的网站提供服务(因为以前HTTP/1.1存在的 Web 服务器只能为每个 IP 地址提供一个网站,这是一个问题)。HTTP/1.0确实允许客户端和服务器添加自己的自定义标头,例如Host,但是客户端或服务器无法知道另一端实际上支持Host标头。但是在HTTP/1.1Host头中以前已添加到规范中,因此如果客户端和服务器都声明它们使用HTTP/1.1,那么另一端知道他们将识别Host标头并正确处理它。

因此,在HTTP/1.0过去,使用自定义标头www.example.com,如果浏览器请求它是从共享 Webhost 提供的,这就是它的结果:

Browser (to DNS server): "Please give me the IP address for 'www.example.com'"
DNS Server (to browser): "www.example.com is 198.51.100.7"

Browser (to 198.51.100.7): "Hello, I speak HTTP/1.0, please send me index.html for Host: www.example.com
Server (to browser): "I also speak HTTP/1.0, here is index.html for 'not-actually-example.com'" 

正如您所看到的,not-actually-example.com即使它要求浏览器www.example.com,因为 Web 服务器正在使用HTTP/1.0它不识别Host标头,即使 Web 浏览器正在发送Host标头(作为扩展/实验标头)。浏览器软件无法知道not-actually-example.com用户是否想要什么

于 2018-09-12T22:18:58.273 回答
1

用人类的话来说,他们说的是:很多人说他们做了 HTTP 1.0 而他们没有,以至于当有人说它时,没人知道它是否真的是 HTTP 1.0。

为了摆脱这种情况,他们选择了一个新号码。

于 2018-09-12T22:18:36.167 回答