停止将引荐来源网址发送到目的地的链接

Posted

技术标签:

【中文标题】停止将引荐来源网址发送到目的地的链接【英文标题】:Stop link from sending referrer to destination 【发布时间】:2011-06-29 07:57:18 【问题描述】:

我有一个页面,我不希望出站链接发送引荐来源网址,因此目标网站不知道它们来自哪里。

我猜这是不可能的,但我只是想确保没有任何隐藏的 javascript 魔法可以做到这一点,并且可以与某些(如果不是大多数)浏览器一起使用。

也许是一些巧妙的 HTTP 状态代码重定向功夫?

这样的东西会很完美

<a href="example.com" send_referrer="false">link</a>

【问题讨论】:

【参考方案1】:

我一直在寻找相同的东西,它看起来像this will be a feature of html5。

您要查找的标签是rel="noreferrer"

已经是implemented in Webkit (Chrome, etc.)、as well as Firefox,但你的里程可能会有所不同。

截至 2020 年,所有主流浏览器都支持它,Opera Mini 和旧版本的 IE11 除外。

【讨论】:

【参考方案2】:

对于 2015 年及以后访问的任何人,现在有一个获得支持的适当解决方案。

HTTP Referrer Policy 规范允许您控制链接子资源(图像、脚本、样式表等)的引荐来源网址发送,目前,它在 Firefox、Chrome 上为 supported 、Opera 和桌面 Safari 11.1。

Edge、IE11、ios Safari 和 11.1 之前的桌面版 Safari 支持旧版本的规范,neveralwaysorigindefault 作为选项。

According to the spec,可以通过指定多个策略值来支持这些。未识别的将被忽略,最后识别的将获胜。

<meta name="referrer" content="never">
<meta name="referrer" content="no-referrer">

此外,如果您想将其应用于需要crossorigin 属性的audioimglinkscriptvideo 标记,请尽可能选择crossorigin="anonymous",以便只有绝对最小值(Origin 标头)将被共享。

(在使用 CORS 时,您无法摆脱 Origin 标头,因为远程站点需要知道哪个域正在发出请求才能允许或拒绝它。)

【讨论】:

注意:Chrome 给出了这个错误:Failed to set referrer policy: The value 'none' is not one of 'always', 'default', 'never', 'no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-crossorigin', or 'unsafe-url'. This document's referrer policy has been left unchanged. 提到的 'none' 值似乎不正确。 @TomPažourek 谢谢。我认为这是旧语法。不知道我最终是如何使用它的。 仍然有一些浏览器使用建议的元标记传递引用者。有没有更好的方法来停止将推荐人发送到任何浏览器?使用noopener 会有帮助吗? @Alex 我没有时间做出结论性的回答,但noopener 的Firefox bug 声称它是旧rel="noreferrer" 的较弱版本我可以说,每个支持noopener 的浏览器都支持这个功能的时间更长。 如果您没有crossorigin 属性(这是最常见的情况),隐私是安全的并且不会交换任何信息(没有Origin 标头)。【参考方案3】:

HTML 5 包含rel="noreferrer",即supported in all major browsers。所以对于这些浏览器,你可以简单的写:

<a href="example.com" rel="noreferrer">link</a>

还有一个适用于其他浏览器的 shim:https://github.com/knu/noreferrer

【讨论】:

请注意这个 shim 依赖于已弃用的 $.browser。【参考方案4】:

Bigmack 在正确的轨道上,但 javascript 位置更改仍会在 Firefox 中发送引荐来源网址。使用元刷新似乎可以解决我的问题。

<a href='data:text/html;charset=utf-8, <html><meta http-equiv="refresh" content="0;URL=&#39;http://google.com/&#39;"></html>'>Link</a>

【讨论】:

我相信这就是 google 对 gmail 中的链接所做的 - 您单击链接并转到空白的 google 跟踪页面,其中元刷新到您单击的原始链接。【参考方案5】:

我也想弄清楚。

我想到的解决方案是使用数据 url 来隐藏我来自的实际页面。

<a href='data:text/html;charset=utf-8, <html><script>window.location = "http://google.ca";</script></html>'>Link</a>

此链接会打开一个仅包含 javascript 以加载不同页面的页面。 在我的测试中,没有向最终目的地提供推荐人。我不知道如果无论如何尝试它可以作为推荐人发送什么,也许是数据网址?这不会泄露你来自哪里。

这适用于 Chrome。 Chrome 是我目前唯一关心的问题,但对于那些不喜欢数据 url 页面中的 javascript 的浏览器。您或许可以尝试元刷新。

【讨论】:

在 chrome 中工作。不幸的是,不在 Firefox 中。【参考方案6】:

除了已经提供的信息。更多关于此主题的信息:https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer

如果您需要针对同源或跨源请求的不同规则,特别允许您发送或不发送推荐信息。

需要考虑的事项取决于您的具体用例。即,如果您从 3rd 方网站提取图像/css/javascript,那么您可能不想识别您正在执行此操作的 URL,因此将使用 no-referrer 选项。而如果您从自己的网站链接到其他网站,您可能希望他们知道您正在向他们发送流量。始终考虑这对双方的影响。如果这两个方面存在冲突,那么还有其他选项,例如将 UTM 跟踪参数添加到 URL 的末尾,这对某些人来说可能会派上用场。完整详情:https://www.contradodigital.com/2014/06/03/importance-utm-tracking-parameters-social-media/

【讨论】:

【参考方案7】:

我不知道我是否在这里遗漏了什么,很高兴得到纠正,但是 URL 缩短服务不能满足您的需求吗?

据推测,目标站点的日志只会显示缩短服务的域,而不是初始引用域,因此您将保持隐藏状态。

【讨论】:

这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于停止将引荐来源网址发送到目的地的链接的主要内容,如果未能解决你的问题,请参考以下文章

使用.htaccess从404页面获取引荐来源网址

将图像链接发送到电报而不显示图像 url

实施 HTTP 到 HTTPS 重定向,保留 Google Analytics(分析)引荐来源网址

无法使用延迟深层链接从 Facebook 实时广告中获取安装引荐来源网址值

PHP:如何获取引荐来源网址?

基于引荐来源网址重定向