我们在从一个网站点击链接进入另一个页面时,浏览器会在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学学,弄一个跳转页,这样别人只知道是从一个跳转页过来的,不知道具体是那个网页了。。
function open_without_referrer(link){ document.body.appendChild(document.createElement('iframe')).src='javascript:"<script>top.location.replace(\''+link+'\')<\/script>"'; }如果如果是新窗口打开,可以使用如下代码:
function open_new_window(full_link){ window.open('javascript:window.name;', '<script>location.replace("'+full_link+'")<\/script>'); }