为什么Wget在其HTTP请求中有主机头?

时间:2010-10-27 10:53:03

标签: http-headers wget http-1.1

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也可以用来代替它?

2 个答案:

答案 0 :(得分:1)

在HTTP / 1.0中,Host标头是可选。不同之处在于HTTP / 1.1将其从可选更改为强制

特别是,如果GET行不包含主机名(如示例所示),则需要将其包含在标题中(因为否则,如果服务器不可能使用“虚拟”域)无法确定您的请求所针对的主机。)

答案 1 :(得分:1)

在实现这是允许一台服务器为多个域提供页面的唯一方法时,很早就将主机标头添加为HTTP / 1.0的“可选”添加项。 wget使用HTTP / 1.0和Host作为与最大站点数量兼容的方式,其中一些站点即使需要主机也不响应HTTP / 1.1。