来自$ _SERVER ['HTTP_REFERER']的结果,当referer标头未发送到服务器时

时间:2012-12-19 08:30:26

标签: php url http-headers

当浏览器向服务器发送标题信息时,$_SERVER['HTTP_REFERER']应该向我们提供上一页网址吗?

当标题信息未发送到服务器时,从$_SERVER['HTTP_REFERER']返回什么?空字符串?假?空值?还是......?

3 个答案:

答案 0 :(得分:12)

如果未发送HTTP referer请求标头,则可能未设置$_SERVER['HTTP_REFERER'],尽管它可能是空字符串。在这种情况下是否设置可能取决于服务器。

与所有HTTP请求标头一样,请在阅读时检查其存在:

$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;

答案 1 :(得分:4)

$_SERVER['HTTP_REFERER']并不可靠,因为用户浏览器上的特定设置可能会破坏它。但是它应该包含以前的URL,并且在未发送标头时它将返回空字符串或NULL,具体取决于服务器配置。

答案 2 :(得分:0)

$ _ SERVER是一个全局数组变量,而referrer值是具有键HTTP_REFERER的数组的元素。如果浏览器没有发送引用标头,那么元素就会从数组中丢失。您可以检查数组是否包含array_key_exists的元素;在这种情况下:

array_key_exists('HTTP_REFERER', $_SERVER)