如果要编写一个HTTP服务器/客户端,支持HTTP/1.0协议有多重要?现在它还在使用吗?
编辑:我更关心的不是HTTP/1.0的有用性/重要性,而是现实世界中实际使用它进行非内部(例如单元测试属于内部使用)目的的软件数量(如浏览器、机器人、智能手机/傻瓜手机等)。
如果要编写一个HTTP服务器/客户端,支持HTTP/1.0协议有多重要?现在它还在使用吗?
编辑:我更关心的不是HTTP/1.0的有用性/重要性,而是现实世界中实际使用它进行非内部(例如单元测试属于内部使用)目的的软件数量(如浏览器、机器人、智能手机/傻瓜手机等)。
到了2016年,你可能认为自1999年引入1.1以来它的显著性会进一步下降,所以已经过去了大约17年。
我检查了7,727,198行日志,看看我得到了多少百分比的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
请求都来自机器人。因此,我试图删除明显来自这些机器人的条目(即包含单词robot、bot、slurp等的代理)。
因此,今天还卡在HTTP/1.0
上的终端用户数量非常有限(0.2%)。然而,如果您希望让机器人浏览您的网站,则可能需要/想要保持HTTP/1.0的运行。虽然它们将其连接标记为HTTP/1.0
协议,但大多数仍将包括Host: ...
头。
此外,从实现的角度来看,HTTP/1.0
和HTTP/1.1
之间的差异非常模糊。大多数人都愉快地混合使用两者。我不会太担心仍然接受/处理HTTP/1.0
请求。
在另一台服务器上,我开始看到像这样的HTTP/2.0
请求(共2427个,而我看到34,161,268个HTTP/1.0
和HTTP/1.1
请求,因此占0.007%):
PRI * HTTP/2.0
相当一部分服务器会故意返回HTTP/1.0响应,因为一些(较老的)浏览器会为HTTP/1.0服务器提供比HTTP/1.1持久连接强制实施的2个连接限制更高的连接限制。
但是通常来说,大多数“HTTP/1.0”实现其实只是轻微受限的HTTP/1.1实现版本,而许多HTTP/1.1实现并不真正支持该版本的某些功能(尤其是流水线传输)。
每当我使用telnet连接服务器以验证连接或找出其不工作的原因时,我经常使用它:
$ telnet 192.168.1.1 80
GET / HTTP/1.0\r\n
\r\n
...
Host:
头即可完成。 - Brian CampbellHTTP/1.0在编写非常基本的客户端时非常重要,这些客户端不需要所有1.1的东西,例如流水线和其他1.1所需的复杂事物。发送请求、接收响应和断开连接非常容易编码。这可能对编写测试用例非常有用,以测试应用程序功能而不是HTTP协议实现。
许多移动浏览器和应用程序使用1.0,因为它们没有更复杂的1.1实现所需的空间或需求,并且非智能手机上的非3G连接的延迟问题完全抵消了1.1功能的任何好处。
还有很多代理将所有内容降级为1.0,无论客户端要求什么,还有IE的问题。
因此,简短的答案是,对于通用的HTTP服务器,1.0非常相关。
我为其他目的自己研究了这个问题:
“代理、某些移动客户端和配置为使用代理的IE使用HTTP/1.0。因此,1.0似乎仍然占据着网络流量的相当大一部分。 ... 是的,仍然有很多1.0客户端存在。”
来源(2009年7月):http://groups.google.com/group/erlang-programming/msg/08f6b72d5156ef74
:-(
更新(2011年3月):
如果你要构建一个客户端/服务器应用程序,请让客户端使用HTTP/1.1,并让服务器接受1.1和1.0两种协议。 在进行Web开发时,如果客户端尝试加载没有Host头信息的页面,这将会非常麻烦,因为我无法知道应该加载哪个站点 :-S 所以最好不要构建这样的客户端;-)
在我看来,自从很久以前(包括模糊的棒棒糖移动设备)就没有真正的HTTP/1.0请求了。
我说真正的请求是因为MSIE仍然默认(假装)降级到HTTP/1.0(除非您在配置中签名),当您通过代理连接时(所有出站请求都被标记为HTTP/1.0)- 但它仍然包括HTTP/1.1特定的请求头,并尊重所有HTTP/1.1响应。
有趣的是,IIS则完全相反,忽略HTTP版本(虽然我还没有进行过太多实验,以查看是否仅适用于MSIE用户代理)。
因此,巧合的是,MSIE和IIS与代理一起使用比符合标准的工具更好。
C.