如何让浏览器访问链接时隐藏Referer
这篇文章是15年写的,觉得有点意思搬过来
大家都知道当我们从某一个A网页上点击超链接进入B页面,此时B页面的 Request Header 中将有一个 Referer 字段,它保存的 是A页面的链接地址。这样B页面就知道这个访问这是从哪里来到我这的。
有时候我们不不想要B页面知道用户从哪来,那咋办啦?这里提供三个方法:
方案一
这个方案最简单,在你的a标签上增加rel="noreferrer"属性,目前大部分Webkit的浏览器已经支持
<a href='http://www.domain.com' rel="noreferrer">open me</a>
方案二
使用 JavaScript 实现
<script> function self_open(url){ var o = document.createElement('iframe'); o.setAttribute('style', 'display:none'); o.setAttribute('src', 'javascript:"<script>top.location.replace(\''+ url +'\')<\/script>"') document.body.appendChild(o); } function new_window_open(url){ window.open('javascript:window.name;', '<script>location.replace("'+ url +'")<\/script>'); } </script> <a href='javascript:self_open("http://www.domain.com")'>open</a> <a href='javascript:new_window_open("http://www.domain.com")'>open</a>
方案三
利用了base64的特性,用后端代码协助实现,所以对浏览器没有限制。这里以PHP来做示例
function go($url) { $base64Str = sprintf('<script>document.write("<meta http-equiv=\"refresh\" content=\"0;url=%s\"/>");</script>', $url); $base64Data = 'data:text/html;base64,' . base64_encode($base64Str); echo sprintf('<script>document.write("<meta http-equiv=\"refresh\" content=\"0;url=%s\"/>");</script>', $base64Data); } go('http://www.domain.com');
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。