在流量监测中,访客的来源信息是一个很重要的信息,包括访客的访前链接,以及搜索关键词。在HTTP请求中有一个referrer标签,用来指明当前流量的来源参考页。例如在http://www.bitauto.com/上点击一个链接到达www.taoche.com首页,那么就referrer就是http://www.bitauto.com/了。在Javascript中,我们可以通过document.referrer来获取同样的信息。通过这个信息,我们就可以知道访客是从什么渠道来到当前页面的。这对于网站分析来说,是非常重要的,这可以告诉我们不同渠道带来的流量的分布情况,还有用户搜索的关键词等,都是通过分析这个referrer信息来获取的。
Referrer信息的丢失使得相对不那么准确的流量数据更加不可琢磨了,也为我们的广告流量监测带来困扰。很多流量统计工具会因此将这部分流量归入“直接流量”,和用户直接键入网址等价了。
Referrer策略用于控制浏览器在何种情况下发送referrer信息。该策略可以保护用户的隐私,但也可以使得目前绝大多数站点的防盗链机制失效。
隐私:一个社交网站会有每个用户的简介页面,用户会在他们的个人主页中添加一些链接。社交网站可能不希望泄露用户的个人主页URL给被链接的网站(因为个人主页URL可能会泄露其主人的身份信息)。安全:一个网站应用使用https和基于URL的会话标识。应用也许希望链接其他站点的https资源但不想泄露位于URL中的用户会话标识符。引用:基于HTTPS的博客可能希望连接到一个HTTP上的博客并收到引用链接1.Referrer策略包含以下值:
空字符串no-referrerno-referrer-when-downgradesame-originoriginstrict-originorigin-when-cross-originstrict-origin-when-cross-originunsafe-url2.下面简单介绍下每种Referrer策略。
.no-referrer:表示所有的请求都不带referrer。.no-referrer-when-downgrade:主要针对于受TLS保护的URL(如https),简单的说就是https的页面中,当连接的资源也是https的,则发送完整的referrer,如果连接的资源是http的,就不发送referrer。same-origin:对于同源的链接,会发送referrer,其他的不会。origin:这个策略对于任何资源来说只发送源的信息,不发送完整的url。strict-origin(浏览器可能不支持):这个策略类似于origin和no-referrer-when-downgrade的合体,如果一个https页面中链接到http的页面或资源,则不会发送referrer。http页面链接以及https链接到https都只发送来源页面的源信息。origin-when-cross-origin:该策略在同源的链接中发送完整的URL,其他情况仅发送源信息。strict-origin-when-cross-origin(浏览器可能不支持):对于同源请求,发送完整的URL;对于同为https的,只发送源信息;对于http页面只发送源信息;https页面中的http请求不发送referrer。unsafe-url:这个主要是解决https页面中的http资源不发referrer的问题,它会使在https页面中http资源发送完整的referrer。空字符串:表示没有referrer策略,默认为no-referrer-when-downgrade。3.用法:
Referrer策略可以通过以下方法声明:
通过http请求头中的Referrer-Policy字段通过meta标签,name为referrer通过<a>、<area>、<img>、<iframe>、<link>元素的referrerpolicy属性。通过<a>、<area><link>元素的rel=noreferrer属性通过隐式继承4.用法举例:
1.http请求头 Referrer-Policy: no-referrer 2.meta标签 <meta name=”referrer” content=”no-referrer” /> 3.referrerpolicy属性 <a href=“http://example.com” referrerpolicy=“origin”> 4.rel=noreferrer属性