说一个是写一个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
来自机器人。因此,我尝试删除明显来自此类的条目(即代理,包括单词机器人、机器人、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,268HTTP/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 实现并不真正支持该版本的某些功能(例如,特别是流水线)。
HTTP/1.0 在编写非常基本的客户端时非常重要,这些客户端不需要所有 1.1 的开销,例如流水线和 1.1 所需的其他复杂事物。发布请求得到响应并且断开连接非常容易编码。这对于为只想测试应用程序功能而不是 HTTP 协议实现的服务器编写测试用例可能很有用。
有许多移动浏览器和应用程序使用 1.0,因为它们没有空间或不需要更复杂的 1.1 实现,而且非智能手机上的非 3G 连接的延迟问题完全抵消了 1.1 功能的任何好处。
无论客户要求什么,也有许多代理会将所有内容降级到 1.0,然后出现 IE 问题。
所以简短的回答是,对于通用 HTTP 服务器,1.0 非常相关。
当我远程登录到服务器以验证连接性或找出它不工作的原因时,我一直使用它:
$ telnet 192.168.1.1 80
GET / HTTP/1.0\r\n
\r\n
...
(因为发出 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。进行网络开发时,让客户端尝试加载没有 Host 标头的页面是一个 PITA,因为我无法知道我应该加载哪个站点:-S 所以你最好不要构建这样的客户端;-)
IME its been a very long time since I've seen a true HTTP/1.0 request. (including mobile devices fuzzylollipop).
I say a true request as MSIE still (pretends) to downgrade to HTTP/1.0 by default (unless yo sig in the config) when you connect via a proxy (all the outgoing requests are flagged as HTTP/1.0) - however it still includes HTTP/1.1 specific request headers and respects all the HTTP/1.1 responses.
Curiously, IIS, in a mirror image, happily ignores the HTTP version (although I've not experimented much with this to see if only does this for MSIE user agents).
So by curious coincidence, MSIE and IIS work much better with proxies than with standards-compliant tools.
C.