我们在从一个网站点击链接进入另一个页面时,浏览器会在header里加上Referer
值,来标识这次访问的来源页面。但是这种标识有可能会泄漏用户的隐私,有时候我不想让其他人知道我是从哪里点击进来的,能否有手段可以让浏览器不要发送Referer
呢?
我试过用window.location.href='...'
来跳转,也还是有Referer
。大家有什么好办法吗?
我们在从一个网站点击链接进入另一个页面时,浏览器会在header里加上Referer
值,来标识这次访问的来源页面。但是这种标识有可能会泄漏用户的隐私,有时候我不想让其他人知道我是从哪里点击进来的,能否有手段可以让浏览器不要发送Referer
呢?
我试过用window.location.href='...'
来跳转,也还是有Referer
。大家有什么好办法吗?
基于HTML标准,可以在a标签内使用rel="noreferrer"
来达到这一目的。
目前大部分基于Webkit的浏览器已经支持。
提供跨浏览器支持的更好的办法是使用一个第三方的库noreferrer.js,它可以自动识别浏览器并选择最优方案。
补充
Opera并没有提供可以实现不发送referrer的方法,noreferrer.js的解决方案是利用google的url中转。在国内的网络环境下,你懂的。。。
可以自己搭建一个跳转的页面,或者用其他站点的url跳转接口。
有个折中的办法
// 例子, 比如index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>转向例子</title> <style type="text/css"> #example, iframe.hidden { display:none; } </style> <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script> <script type="text/javascript"> $().ready(function(){ $("#example").show(); $(document.body).on('click', 'a[rel~="hide_ref"]',function(){ var url = '/redirect.html#!'+ encodeURI(this.href); $('<iframe class="hidden" src="'+url+'"></iframe>').appendTo($(document.body)); return false; }); }); </script> </head> <body> <div id="example"> <h1>正常链接</h1> <a href="http://www4.ncsu.edu/~awwatkin/SHTML/dump.shtml">http://www4.ncsu.edu/~awwatkin/SHTML/dump.shtml</a> <h1>隐藏referer</h1> <a href="http://www4.ncsu.edu/~awwatkin/SHTML/dump.shtml" rel="hide_ref">http://www4.ncsu.edu/~awwatkin/SHTML/dump.shtml</a> </div> </body> </html>
// 这个是中间文件, redirect.html
<script type="text/javascript"> var hash = location.hash; location.hash = ''; if(hash.substring(0,2)==='#!') { var url = decodeURI(hash.substring(2)); top.location.href = url; } </script>
这样只要点击rel里带hide_ref里链接, 都会生成一个iframe, iframe里读取location.hash(再重置), 然后top.location.href做转向, 无论从哪个地址点过去, 都是那个iframe的url
今天看查看blog refer的时候,发现很多的是来自跳转页的,所以觉得LZ的解决方法可以跟google学学,弄一个跳转页,这样别人只知道是从一个跳转页过来的,不知道具体是那个网页了。。
如果如果是新窗口打开,可以使用如下代码: