文档引用者(document.referrer)是否跨浏览器兼容?

11

我想使用 document.referrer 来进行非正式的引荐检查。这个元素是否跨浏览器兼容?在尝试引用 document 对象时,任何浏览器是否会抛出错误?

3个回答

15

document.referrer属性在DOM规范中有描述:

http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-95229140

因此,它应该被所有浏览器支持。但是,您可以通过以下方式轻松检测实现是否支持此属性:

if( 'referrer' in document ) { 
    console.log(document.referrer);
}

在测试浏览器支持时,要小心使用console.log,因为它本身并不被所有浏览器支持。 - user227353

2
您不能仅依赖此方法来确定请求是否来自浏览器(许多非浏览器机器人也会发送此信息)。虽然它被浏览器支持,但有些隐私程序明确不提供此信息。有时代理服务器会这样做...请参见http://en.wikipedia.org/wiki/HTTP_referrer ... 如果从HTTP安全(HTTPS)连接访问网站并且链接指向非安全连接,则不会发送referrer字段。

所以答案是肯定的,但有例外情况。


我认为你正在引用服务器端的 $_SERVER['HTTP_REFERRER'] 头部值,而不是 JavaScript 的 document.referrer - adambullmer

-3

27
即使这是真的,我也不会依赖来自w3schools.com网站的任何内容。 - jAndy
1
这里有一个稍微可信一些的来源证实了同样的事情,所以我认为w3schools.com在这个问题上是正确的。http://code.google.com/p/doctype/wiki/DocumentReferrerProperty - buley
谢谢大家。我从没想过w3schools会提供不准确的数据。 - user194076
有趣的是,为了支持你的评论,他们的示例在从这个页面引用时无法工作。 - TomFirth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接