我有一个页面,我不想让出站链接发送referrer,这样目标网站就不知道它们来自哪里。
我猜这可能是不可能的,但我只想确保没有任何隐藏的JavaScript魔法可以做到,并且可以在某些(如果不是大多数)浏览器中使用。
也许有些聪明的HTTP状态码重定向技巧?
类似这样的东西将是完美的
<a href="example.com" send_referrer="false">link</a>
我有一个页面,我不想让出站链接发送referrer,这样目标网站就不知道它们来自哪里。
我猜这可能是不可能的,但我只想确保没有任何隐藏的JavaScript魔法可以做到,并且可以在某些(如果不是大多数)浏览器中使用。
也许有些聪明的HTTP状态码重定向技巧?
类似这样的东西将是完美的
<a href="example.com" send_referrer="false">link</a>
rel="noreferrer"
,具体信息可以参考此链接:https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer。根据 https://caniuse.com/rel-noreferrer 的数据显示,自 2015 年以来,所有主流浏览器都支持这个属性,虽然 Opera Mini 不支持(当然,有些用户可能使用旧版本的浏览器)。never
、always
、origin
和 default
。
根据规范,可以通过指定多个策略值来支持它们。无法识别的将被忽略,而最后一个识别的将会生效。<meta name="referrer" content="never">
<meta name="referrer" content="no-referrer">
HTML 5包括rel="noreferrer"
,这是在所有主流浏览器中都支持的。因此,对于这些浏览器,您可以简单地编写:
<a href="example.com" rel="noreferrer">link</a>
其他浏览器也有适用的补丁程序:https://github.com/knu/noreferrer
Bigmack 步入正轨,但在 Firefox 中,JavaScript 更改位置仍会发送 referrer。对我来说,使用 meta refresh 似乎解决了这个问题。
<a href='data:text/html;charset=utf-8, <html><meta http-equiv="refresh" content="0;URL='http://google.com/'"></html>'>Link</a>
我也在尝试弄清楚这个问题。
我想到的解决方法是使用数据URL来隐藏我实际访问的页面。
<a href='data:text/html;charset=utf-8, <html><script>window.location = "http://google.ca";</script></html>'>Link</a>
这个链接打开的页面只包含javascript代码,用来加载不同的页面。 在我的测试中,最终目标页面没有referrer信息。如果试图发送referrer,它可能会发送data url信息,这将不会透露来源信息。
这对于Chrome浏览器是有效的。对于那些不支持在data url页面内使用javascript的浏览器,您可以尝试使用meta refresh。
我不确定我是否漏掉了什么,非常乐意接受纠正,但是一个URL缩短服务是否能够满足您的需求呢?
可以推测,在目标站点的日志中只会显示缩短服务的域名,而不是最初的引荐域名,因此您将保持匿名。
noopener
是否有帮助? - Alexnoopener
是旧版rel="noreferrer"
的一个较弱版本。据我所知,每个支持noopener
的浏览器都已经更早支持了这个旧版功能。 - ssokolowcrossorigin
属性(这是最常见的情况),则隐私是安全的,不会交换任何信息(没有Origin
头)。 - collimarcocrossorigin="anonymous"
时,我说的是“需要CORS的标签”。 - ssokolow