【发布时间】:2011-08-25 15:32:08
【问题描述】:
根据定义 HTTP/1.1 的RFC 2616,Host: 标头是强制性的。
客户端必须在所有 HTTP/1.1 请求消息中包含 Host 标头字段。
但是PHP manual 暗示它可能是空的:
'HTTP_HOST':Host 的内容:当前请求的标头,如果有的话。
在哪些情况下,此标头以及 $_SERVER['HTTP_HOST'] 可能为空?我的应用程序能否依赖于它的存在?
【问题讨论】:
-
根据HTTPbis,
Host:标头仍然是“强制性的”,但这并不意味着它会一直存在。 Apache 优雅地处理它的缺失(尽管它不会到达任何配置的虚拟主机)。 -
@mario: 是否有实际的 HTTP/1.1 客户端不发送
Host:标头? -
我不会认为他们是真正的客户,当然当代的浏览器和库都不会。但是任何手工制作的 PHP 脚本都可以。但是,这主要是一个配置问题,与 Apache 虚拟主机无关。 HTTP_HOST 由 Apache 预先筛选,我不会担心它在实践中是空的。不太可能的边缘情况。
标签: php http http-headers