2009-05-25 63 views
2

我之前在foo.php中使用了referrer来决定页面iframing foo.php是否为特定的URL。 (使用$_SERVER['HTTP_REFERER']HTTP_REFERER在什么情况下不起作用?

事实证明,大多数情况下,它的工作(大约98%的时间),但它似乎也有一些用户到达页面,$_SERVER['HTTP_REFERER']没有在foo.php中设置,因此打破代码。 [更新:这些用户声称他们遵循通常的页面流程,并没有在浏览器上自行使用foo.php的URL(他们让它成为iframe),并且用户从未更改过浏览器设置。 ]

我不知道是什么原因可能发生?

回答

1

不是默认情况下AFAIK,但很容易关闭它(隐私),例如在Firefox中通过about:config,肯定有些用户可以使用分发给他们的浏览器(例如他们的IT部门)使用这种设置。所以你应该尽量避免依赖于REFERER来获取任何重要的功能(当然也是因为拼写错误;-)。

6

HTTP/1.1 RFC并不强制发送HTTP referer头。编写健壮的代码时,您不能对其存在做任何假设;完美的浏览器可能不包括它。

Moreoever,所述RFC建议,“引荐字段绝不能如果Request-URI是从不具有其自身的URI,诸如来自用户的键盘输入的来源获得发送”,和“我们建议,尽管不要求,为用户提供方便的切换接口来启用或禁用发送“发件人”和“引荐者”信息“

后者不是很常见(尽管一些浏览器具有符合要求的“私有”模式)。 2%的可能性更大的是人们收到的URL满足第一个标准(从没有URI的源获得的URI),因此浏览器不发送任何引用。

相关问题