假设一个是编写HTTP服务器/客户端,支持HTTP/1.0有多重要?它现在仍然在任何地方使用吗?
编辑:我与HTTP/1.0的有用性/重要性不太关注,而量软件实际使用它的非内部(单元测试是内部使用,例如)目的在现实世界(浏览器,机器人,智能手机/傻瓜等...).
截至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
来自机器人.所以我试图删除显然是这样的条目(即代理包括机器人,机器人,slurp等)
所以看起来最终用户仍然坚持的HTTP/1.0
数量今天非常有限(0.2%).但是,如果您想让机器人检查您的网站,您可能需要/希望保持HTTP/1.0正常运行.大多数人都会包含Host: ...
标题,即使他们将他们的连接作为HTTP/1.0
协议做广告.
此外,实施方面的差异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
wget
使用HTTP/1.0,它仍然相对流行(虽然它支持一些HTTP/1.1功能,如Host:
标头,这是访问任何虚拟主机所必需的).
相当数量的服务器会故意返回HTTP/1.0响应,因为一些(较旧的)浏览器将为HTTP/1.0服务器提供比HTTP/1.1持久连接强加的2连接限制更高的连接限制.
但一般来说,大多数"HTTP/1.0"实现实际上只是HTTP/1.1实现的略有限制的版本,并且许多HTTP/1.1实现并不真正支持该版本的某些功能(例如特别是流水线技术).
当我远程访问服务器以验证连接或弄清楚它为什么不起作用时,我一直使用它:
$ 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非常相关.
为了其他目的自己调查:
"当配置为使用代理时,代理,某些移动客户端和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头的页面是一个PITA,因为我无法知道我应该加载哪个站点:-S所以你最好不要构建这样的客户端;-)