HTTP什么时候Http Referrers有效
Posted Rank-Bill
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP什么时候Http Referrers有效相关的知识,希望对你有一定的参考价值。
Where did all the HTTP referrers go?
翻译来源网址:http://smerity.com/articles/2013/where_did_all_the_http_referrers_go.html 。
版权为原作者所有。如有疑问请联系!
在web开发者社区中,普遍认为网站的访问应该采用默认的HTTPS协议。HTTP协议本身存在者信息未加密、容易被窃听与篡改、以及受到中间人攻击等安全问题。采用HTTPS协议,则可以很好的解决了这些的问题。
然而,采用HTTPS也带来了其它的问题。HTTPS将的反向链接(Http Referrers)变得不可用。当从HTTPS到HTTP的网站时,将不存在Http Referrers的属性。然而,当从Https到https的时候该属性仍然会带上。
当遇到反向链接不可用的时候,我们该如何解决了,下面会介绍一些解决的办法。
Https Referrers
假设你在reddit的网站点击去 homakov.blogspot.ru的网站。 homakov.blogspot.ru的服务器将会知道你来自reddit.com。甚至知道你详细的访问页面以及参数。在这个例子中,查询的页面来自 /r/netsec目录下, 参数是 homakov。
当浏览器访问一个网页的时候,会默认的发送GET请求至服务器,其中会包括许多的HTTP Headers。其中的一个属性即是Http Referres用来标志访问链接的来源。
如上第二行即是Referrers即是标志该反向链接的地址。这个参数经常被一些网站统计分析工具所用,如 Google Analytics 和 ChartBeat。
Https 杀死 Http Referrers
Https关闭了向Http网站传递Http Referrers。根据RFC 2616(HTTP 1.1),主要是因为在指向的URL中,一些敏感的信息会被加密。
Clients SHOULD NOT include a Referer header field in a (non-secure) HTTP request if the referring page was transferred with a secure protocol.
乍看起来,这样设置十分合理。但是这样的硬性的规则很难适应在越来普遍的HTTPS的网站。HTTPS Referrers将包括敏感的信息,在从HTTPs中到HTTPS中将会默认的被发送,然而在Https到Http的时候该字段将会被抛弃。
这样的方式留下两个问题。
1.http网站将无法获得https网站的反向链接。
2.Https会发送任何Http Referrers(无论是否包括敏感信息)给其它的Https的网站。
第一种情况我们会丢失网站流量来源的数据。第二种情况则存在安全或信息的漏洞。
修复HTTP Referrers的问题:meta referrers
我们以某种方式告诉Http采取特定的方式,具体包括如下几种情形:
Never:表示URL包含敏感的信息,我们不希望告诉任何人该信息,将Http Referrer丢弃。
Origin:表示告知流量的来源,但对于具体的参数丢弃
Default:默认行为。均会传递Http Referrers ,但除了Https到Http的访问。
Always: 包括默认链接与Https至http的链接。均会传递Referrers。
在实际的使用中我们只需要设置meta的标签即可如:
<meta name="referrer" content="always">,
然而并非所有的浏览器均支持该属性,其支持情况如下
主流网站如何设置该属性,如下
添加meta标签,拯救全世界吧
以下为作者的建议
如果网站出于安全的考虑设置Never,如果希望通过流量来获得利益则,则允许referrers至任何的网站。
以上是关于HTTP什么时候Http Referrers有效的主要内容,如果未能解决你的问题,请参考以下文章
为什么http.Get(“http:// [::]:1234”)有效?