$ _SERVER ['HTTP_HOST']未设置

时间:2011-01-01 12:38:04

标签: php apache

我的php页面流量很大,但没有设置变量$_SERVER['HTTP_HOST']

此流量类似于每秒1次点击。我不知道它可能是什么,但为了减少服务器负载,我在每个php页面的顶部做这个:

if (!isset($_SERVER['HTTP_HOST']))
    exit;

你知道是什么原因引起的吗?没有设置HTTP_HOST时退出是否安全?

普通用户是否可以在未设置HTTP_HOST的情况下访问我的网页?

  • PHP版本:5.2.0-8
  • Apache:2.2.3

2 个答案:

答案 0 :(得分:6)

嗯,可能也是“apache虚拟连接”。检查您是否访问“内部虚拟连接”的日志,主apache进程使用这些命令将命令发送到他的子进程(如自己自杀,或者我们需要重新加载conf)。这些连接是在HTTP / 1.0中进行的,没有HOST设置。

http://wiki.apache.org/httpd/InternalDummyConnection

论文#$!“#sh#f#ck * $!连接在那里制造了很多错误,(缓存,没有HTTP / 1.1等)。一个'简单'的解决方案是没有你的主机名Virtuahost为您的主应用程序提供默认的虚拟主机。使用'it works'页面保存一个非常简单的默认虚拟主机,或者非常简单的“如果您获得此页面,您可能会尝试在某处获得支持HTTP / 1.1的浏览器”,如静态页面。然后,所有HTTP / 1.0流量或仅通过IP访问服务器的人员将不在您的实际应用程序中。

为了完成,我今年看到一家公司使用不良代理从所有传出的HTTP流量中删除Host头。但是那些坏人是愚蠢的,我不认为有很多人仍然在没有主机的情况下浏览HTTP / 1.0。

答案 1 :(得分:2)

HTTP_HOST是客户端HTTP请求的一部分,它指定请求将指向哪个主机名。有必要在多站点设置中区分正确的站点。

如果未设置HTTP_HOST,则客户端非常非常老(HTTP 1.0不支持HTTP_HOST)或直接向您网站的IP发出请求。

我无法看到阻止你这样做的任何伤害。但是,如果您担心流量,那么在Web服务器级别修复此功能可能更明智。