删除http referer

shi*_*iva 53 http http-headers

它是一种删除或隐藏请求标头中的http引用信息的方法吗?我想删除使用javascript python或django中的脚本从我的网站转到其他网站的用户的http引用信息

例:

Host    slogout.espncricinfo.com
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0    
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8    
Accept-Language en-us,en;q=0.5    
Accept-Encoding gzip, deflate    
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7    
Connection  keep-alive
Referer http://slogout.espncricinfo.com/index.php?page=index&level=login
Run Code Online (Sandbox Code Playgroud)

Mar*_*rcG 105

截至2015年,这是您阻止发送Referer标头的方式:

只需将其添加到网页的head部分:

 <meta name="referrer" content="no-referrer" />
Run Code Online (Sandbox Code Playgroud)

这适用于链接和页面上JavaScript代码发出的Ajax请求.

其他有效meta选项包括:

<meta name="referrer" content="unsafe-url" />
<meta name="referrer" content="origin" />
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="referrer" content="origin-when-cross-origin" />
Run Code Online (Sandbox Code Playgroud)

•在此处查看它是否适用于您的浏览器:http://caniuse.com/#feat=referrer-policy

•请参阅此处的规范:http://w3c.github.io/webappsec/specs/referrer-policy/

另请注意,浏览器现在发送Origin标头(包含CORS请求和POST请求,请参见此处:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin),其中包括域和端口,以及据我所知,无法删除.如果您使用<meta name="referrer" content="origin" />引用者将包含与Origin标题类似的信息,从隐私的角度来看,这已经是好的,因为它将隐藏用户所在的确切页面.

更新:

如果您只想使用JavaScript删除引荐来源,则可以在发出Ajax请求之前动态添加相应的元标记.此JavaScript将添加<meta name="referrer" content="no-referrer" />到网页的head部分:

var meta = document.createElement('meta');
meta.name = "referrer";
meta.content = "no-referrer";
document.getElementsByTagName('head')[0].appendChild(meta);
Run Code Online (Sandbox Code Playgroud)

  • 罗普,谢谢你指出这一点.我相信`content = never`比`content = none`更兼容,因为新规范说"从不"或"没有推荐人",返回"no-referrer".虽然它也说"鼓励作者避免使用遗留关键字永远,默认和永远.关键字no-referrer,no-referrer-when-downgrade和unsafe-url分别是首选. (3认同)
  • 正如caniuse.com所述,这不适用于IE,某些移动浏览器,MS Edge也有部分支持.因此,这不足以使URL中的敏感信息远离第三方. (2认同)
  • 根据文档 https://www.w3.org/TR/referrer-policy ,没有提及“no-referrer”。应该是: &lt;meta name="referrer" content="none" /&gt; (2认同)
  • 值得注意的是,`content = no-referrer`并不适用于所有浏览器,而`content = never`似乎适用于所有支持`no-referrer`然后支持某些浏览器的浏览器.现在你应该使用`content = never`. (2认同)

jpg*_*rek 10

在Javascript中有一个跨浏览器解决方案,它使用Iframes动态创建,检查概念证明(免责声明:它使用我为此目的编写的一点JS库).

  • 使用https填充的简单技巧和javascript填充的iframe:http://stackoverflow.com/a/30304058/2440 (3认同)

Hel*_*rld 5

如果您只想隐藏完整的URL并且不介意保持您的域名公开,那么这个小的Javascript代码可以完成这项工作.

您的用户在example.com/secret_url_we_want_to_hide,您的用户点击了应该发送给他们的链接google.com.但不是<a href="http://google.com">Go to Google</a>,我们使用这个:

a href="http://example.com/redirect.html#http://google.com">Go to Google</a>

/redirect.html包含以下内容的HTML页面在哪里:(编辑:请参阅更新!)

<html><head></head><script>
window.location.replace(location.hash.substring(1));
</script></html>
Run Code Online (Sandbox Code Playgroud)

Google.com会http://example.com/redirect.html在引荐来源标记中看到并且永远不会看到实际内容example.com/secret_url_we_want_to_hide.

更新:

Firefox有location.hash 的错误,解决方法如下:

<html><head></head><script>
workaround_hash=location.href.split('#').splice(1).join('#');
window.location.replace(workaround_hash);
</script></html>
Run Code Online (Sandbox Code Playgroud)