HTTP/1.0还在使用吗?

HTTP/1.0还在使用吗?,http,backwards-compatibility,Http,Backwards Compatibility,假设一个是编写HTTP服务器/客户机,那么支持HTTP/1.0有多重要?现在它还在任何地方使用吗 编辑:我不太关心HTTP/1.0的可用性/重要性,而是关心现实世界中(浏览器、机器人、智能手机/手机等)实际用于非内部(例如,单元测试是内部使用)目的的软件数量.当我通过telnet连接到服务器以验证连接或找出其不工作的原因时,我一直在使用它: $ telnet 192.168.1.1 80 GET / HTTP/1.0\r\n \r\n ... (因为提出1.0请求不需要我提供任何额外的头)

假设一个是编写HTTP服务器/客户机,那么支持HTTP/1.0有多重要?现在它还在任何地方使用吗


编辑:我不太关心HTTP/1.0的可用性/重要性,而是关心现实世界中(浏览器、机器人、智能手机/手机等)实际用于非内部(例如,单元测试是内部使用)目的的软件数量.

当我通过telnet连接到服务器以验证连接或找出其不工作的原因时,我一直在使用它:

$ telnet 192.168.1.1 80
GET / HTTP/1.0\r\n
\r\n

... 

(因为提出1.0请求不需要我提供任何额外的头)

HTTP/1.0在编写非常基本的客户机时非常重要,这些客户机不需要1.1所需的所有开销,如管道和1.1所需的其他复杂内容。发布请求、获得响应和断开连接非常容易编写代码。这在为只想测试应用程序功能而不是HTTP协议实现的服务器编写测试用例时可能很有用


有很多移动浏览器和应用程序使用1.0,因为它们没有空间或需要更复杂的1.1实现,而非智能手机上非3G连接的延迟问题完全否定了1.1功能的任何好处

还有很多代理将所有内容降级为1.0,而不管客户机要求什么,还有IE问题


因此,简单的回答是,对于通用HTTP服务器,1.0非常相关。

使用HTTP/1.0,并且它仍然相对流行(尽管它确实支持一些HTTP/1.1功能,如
主机:
头,这是访问任何虚拟主机所必需的).

IME我已经很久没有看到真正的HTTP/1.0请求了。(包括移动设备)

当您通过代理进行连接时(所有传出请求都标记为HTTP/1.0),作为MSIE的真实请求仍然(假装)在默认情况下降级到HTTP/1.0(除非配置中有yo sig)——但是它仍然包含HTTP/1.1特定的请求头并尊重所有HTTP/1.1响应

奇怪的是,镜像中的IIS很高兴地忽略了HTTP版本(尽管我没有对此进行过太多实验,以了解是否只有对MSIE用户代理这样做)

因此,奇怪的巧合是,MSIE和IIS使用代理比使用符合标准的工具工作得更好


C.

相当多的服务器会故意返回HTTP/1.0响应,因为某些(较旧的)浏览器会为HTTP/1.0服务器提供比为HTTP/1.1的持久连接施加的2连接限制更高的连接限制


但一般来说,大多数“HTTP/1.0”实现实际上只是HTTP/1.1实现的稍微有限的版本,而且许多HTTP/1.1实现并不真正支持该版本的某些功能(例如,特别是管道)。

为了其他目的,我自己对此进行了研究:

“HTTP/1.0被代理、一些移动客户端和IE使用时 配置为使用代理。因此1.0似乎仍然适用于非 web总流量的微不足道%。 ... 是的,还有很多1.0客户端。”

资料来源(2009年7月):

:-(

更新(2011年3月):

如果要构建客户机/服务器,请使客户机使用HTTP/1.1,并使服务器同时接受1.1和1.0。 在进行web开发时,让客户端尝试加载一个没有主机头的页面是一件麻烦事,因为我无法知道应该加载哪个站点:-S
所以你最好不要建立这样的客户;-)

从2016年开始,你会认为自1999年推出1.1以来,其知名度将进一步下降,因此这大约是17年

我检查了7727198行日志,查看我从
HTTP/1.0
HTTP/1.1
中得到的百分比:

 Protocol    Counts      Percent
--------------------------------
HTTP/0.9            0     0.00%
HTTP/1.0    1,636,187    21.17%   (all)
HTTP/1.0       15,415     0.20%   (without the obvious robots)
HTTP/1.1    6,091,011    78.83%
HTTP/2              0     0.00%
据我所见,大多数HTTP/1.0
HTTP/1.0
都来自机器人。因此,我试图删除明显来自这样的条目(即代理,包括单词robot、bot、slurp等)

因此,目前仍然使用HTTP/1.0的终端用户数量似乎非常有限(0.2%)。然而,如果你想让机器人检查你的网站,你可能需要/想要保持HTTP/1.0的运行。大多数都会包含
主机:…
头,即使它们以
HTTP/1.0
协议的形式公布它们的连接

此外,
HTTP/1.0
HTTP/1.1
之间的差异在实现方面非常模糊。大多数人都很高兴地将两者混合在一起。我不会太担心仍然接受/处理
HTTP/1.0
请求

在另一台服务器上,我开始看到类似这样的
HTTP/2.0
请求(得到2427个,我看到34161268个
HTTP/1.0
HTTP/1.1
请求,所以0.007%):


JWZ编写了一个简单的1.0-client-to-1.1-server代理,您可能对此感兴趣:注意,这在任何虚拟主机上都不起作用;建立HTTP 1.1连接并不困难,只需添加一个
主机:
头,就可以了。这并不完全正确——首先,IE7在2006年改变了默认设置,其次,WinINET发出的HTTP/1.0请求不会发送接受编码头,如果您发送压缩响应作为返回,WinINET将拒绝对其进行解压缩。“大量的移动浏览器和应用程序”,“大量的代理”。。。。。。。特别是哪个?它们的意义(用户人数)是什么呢?
curl默认使用HTTP1.1。请看,我使用的是GNUWGET1.19.2,默认情况下它似乎使用HTTP1.1。说HTTP 1.1是在1.13版本中添加的。符合RFC的HTTP/2客户端不会盲目发送该请求。默认情况下,浏览器和curl仅在服务器在TLS上播发h2 alpn时使用HTTP/2,而curl--http2(不含TLS)使用RFC中指定的升级方法。那些
PRI * HTTP/2.0