HTTP的Referrer和Referrer Policy设置

Referrer

referrer是HTTP请求header的报文头,用于指明当前流量的来源参考页面。通过这个信息,我们可以知道访客是怎么来到当前页面的。这对于Web Analytics非常重要,可以用于分析不同渠道流量分布、用户搜索的关键词等。
但是,这个字段同时会造成用户敏感信息泄漏(如:带有敏感信息的重置密码URL,若被Web Analytics收集,则存在密码被重置的危险)。

Referrer Policy States

新的Referrer规定了五种策略:

  • No Referrer:任何情况下都不发送Referrer信息
  • No Referrer When Downgrade:仅当协议降级(如HTTPS页面引入HTTP资源)时不发送Referrer信息。是大部分浏览器默认策略。
  • Origin Only:发送只包含host部分的referrer.
  • Origin When Cross-origin:仅在发生跨域访问时发送只包含host的Referer,同域下还是完整的。与Origin Only的区别是多判断了是否Cross-origin。协议、域名和端口都一致,浏览器才认为是同域。
  • Unsafe URL:全部都发送Referrer信息。最宽松最不安全的策略。

referrer具体设置

CSP响应头

CSP(Content Security Policy)

Content-Security-Policy: referrer no-referrer|no-referrer-when-downgrade|origin|origin-when-cross-origin|unsafe-url;

指令和指令值之间以空格分割,多个指令之间用英文分号分割。

注意:该功能已经废弃,详见官网

Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

标签

html页面的meta标签指定。
如果content属性不是合法的取值,浏览器会自动选择no-referer策略。

<meta name="referrer" content="no-referrer|no-referrer-when-downgrade|origin|origin-when-crossorigin|unsafe-url">

标签的referer属性

  • 作用的只是当前标签。
  • 策略只有三中:不传、只host、都传(即完整URL)。
  • 针对单个链接设置的策略优先级比CSP和要高。
<a href="http://example.com" referrer="no-referrer|origin|unsafe-url">xxx</a>

PS:

题外话:楼主之前使用CNZZ进行站长统计,7月份开始,单个页面的访问统计失效,全部归入首页。今天终于明白,应该是博客园增加了referrer policy导致。

posted @ 2018-09-28 00:35  AmyZYX  阅读(46893)  评论(0编辑  收藏  举报