HTTP / 1.0和HTTP / 1.1之间的主要区别在于HTTP / 1.1中包含强制 主机标头(来源:HTTP Pocket Reference - O'reilly )。
那么,为什么使用HTTP / 1.0协议的Wget中有一个主机头?
我的Wget输出netcat:
GET / HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: 127.0.0.1:10101
Connection: Keep-Alive
很明显,Wget使用HTTP / 1.0协议版本,它如何在其中包含主机头?或者我对HTTP协议的理解有问题吗?
即使HTTP / 1.0在其HTTP请求中可以有主机标头,wget使用HTTP / 1.0协议的原因是什么,而HTTP / 1.1也可以用来代替它?
答案 0 :(得分:1)
在HTTP / 1.0中,Host
标头是可选。不同之处在于HTTP / 1.1将其从可选更改为强制。
特别是,如果GET
行不包含主机名(如示例所示),则需要将其包含在标题中(因为否则,如果服务器不可能使用“虚拟”域)无法确定您的请求所针对的主机。)
答案 1 :(得分:1)
在实现这是允许一台服务器为多个域提供页面的唯一方法时,很早就将主机标头添加为HTTP / 1.0的“可选”添加项。 wget使用HTTP / 1.0和Host作为与最大站点数量兼容的方式,其中一些站点即使需要主机也不响应HTTP / 1.1。