【HTTP】什么时候Http Referrers有效

来源:互联网 发布:淘宝网购物女装皮草 编辑:程序博客网 时间:2024/05/22 12:18

在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://m.blog.csdn.net/yechonglaile/article/details/55804391