Http headers 为什么Wget的HTTP请求中有主机头?

Http headers 为什么Wget的HTTP请求中有主机头?,http-headers,wget,http-1.1,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输出包括: 很明显,Wget使用的是HTTP/1.0协议版本,它怎么可能有主机头呢?或者我对HTTP协议的理解有什么问题吗 即使HTTP/1.0可以在其HTTP请求中包含主机头,wget使用HTTP/1.0协议而HTTP/1.1也可以替代主机头的原因是什么?在HT

HTTP/1.0和HTTP/1.1之间的主要区别在于HTTP/1.1中有一个必需的主机头(来源:HTTP Pocket Reference-O'reilly)

那么,为什么使用HTTP/1.0协议的Wget中有一个主机头呢

我的Wget输出包括:

很明显,Wget使用的是HTTP/1.0协议版本,它怎么可能有主机头呢?或者我对HTTP协议的理解有什么问题吗


即使HTTP/1.0可以在其HTTP请求中包含主机头,wget使用HTTP/1.0协议而HTTP/1.1也可以替代主机头的原因是什么?

在HTTP/1.0中,主机头是可选的。区别在于HTTP/1.1将其从可选更改为强制


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

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

但是,服务器将尽一切努力遵守客户端正在使用的最兼容的HTTP版本。因此,即使wget使用1.1,服务器也将使用最兼容的服务器。无论是1.1还是1.0,它为什么不响应请求?如果服务器不理解1.1,它就不会响应1.1请求。我知道现在不使用1.1的服务器数量可能很小,但既然wget不需要1.1所能提供而1.0所不能提供的任何东西,为什么它会选择删除任何1.0服务器?
GET / HTTP/1.0
User-Agent: Wget/1.12 (linux-gnu)
Accept: */*
Host: 127.0.0.1:10101
Connection: Keep-Alive