HTTP:主机 header 字段中是否允许使用 IP 地址?

HTTP: Is an IP address allowed in the host header field?

我看过RFC 2616 (HTTP/1.1),我觉得对上面的问题不是很清楚。

据我了解,主机 header 字段的目的是能够在一个 IP 地址下提供多个域。因此主机 header 字段中的 IP 地址没有多大意义。但 RFC 2616 并未明确禁止这样做。

所以我的第一个问题是:如果我编写一个 HTTP 服务器,我是否应该执行检查,客户端是否在主机 header 字段中发送 IP 地址,或者这是不必要的,因为没有客户端会这样做吗?

第二个问题:如果客户端在主机 header 字段中发送 IP 地址,服务器应该将其视为有效还是应该 return “400 Bad Request”?

Host header 可以是原始 IP 文字。适当的 RFC 引用是:

RFC3986 中 host 的定义是:

host = IP-literal / IPv4Address / reg-name

至于返回400 Bad Request,我当然不会。如果您键入“http://172.217.3.100/”,那么浏览器(或至少是 curl)将在请求中发送 Host: 172.217.3.100