新的Referrer Policy规定了五种Referrer策略Referrer Policy States如下:
No Referrer策略
属性值:no-referrer
意义:任何情况下都不发送 Referrer 信息。
No Referrer When Downgrade策略
属性值:no-referrer-when-downgrade
意义 :仅当发生协议降级时不发送Referrer信息(如 HTTPS 页面引入 HTTP 资源,从 HTTPS 页面跳到 HTTP 等)时不发送 Referrer信息。这个规则是现在大部分浏览器默认所采用的。
Origin Only策略
属性值:origin
意义:发送只包含host部分的 Referrer。启用这个规则,无论是否发生协议降级,无论是本站链接还是站外链接,都会发送 Referrer信息,但是只包含协议+host部分(不包含具体的路径及参数等信息)。
Origin When Cross-origin策略
属性值:origin-when-crossorigin
意义:仅在发生跨域访问时发送只包含host的Referrer,同域下还是完整的。它与Origin Only的区别是多判断了是否Cross-origin。需要注意的是协议、域名和端口都一致,才会被浏览器认为是同域;
Unsafe URL策略
属性值:unsafe-url
意义:无论是否发生协议降级,无论是本站链接还是站外链接,统统都发送 Referrer 信息。正如其名,这是最宽松而最不安全的策略;
怎么应用上面的Referrer策略呢?主要有两种方法,一种是在服务端使用响应头信息控制,一种是使用页面中meta标签属性控制。
1.服务端对Referrer的控制,以Nginx为例。直接在Nginx的响应上增加定义该Referrer-Policy响应头信息即可:
#nginx中增加对Referrer的控制 add_header Referrer-Policy "origin-when-crossorigin"; add_header 'Referrer-Policy' 'origin'; add_header 'Referrer-Policy' 'unsafe-url';
2.可以在页面中meta标签属性控制
#的html响应元素中控制 <meta name="referrer" content="no-referrer"> <meta name="referrer" content="no-referrer-when-downgrade"> <meta name="referrer" content="origin">