在正式讲解之前,我们先了解一些基础的知识:什么是Referral和Referrer-Policy?
什么是Referral
当一个用户点击一个链接调到另一个页面的时候,目标页面会收到一个信息,表示是从哪个链接跳转过来的,这个就是referral了,Referral的作用就是说明从哪个页面跳转过来的。
什么是Referrer-Policy
Referrer-Policy,中文叫引荐来源政策或叫Referral的策略,作用是控制Referral传递的内容,Referrer
网站请求中的标头中确切发送了哪些信息,取决于Referrer-Policy
的设置。常用的类型有:
- Referrer-Policy: no-referrer——不显示
Referrer
的任何信息在请求头中。
- Referrer-Policy: no-referrer-when-downgrade——这是默认值。当从https网站跳转到http网站或者请求其资源时(安全降级HTTPS→HTTP),不显示
Referrer
的信息,其他情况(安全同级HTTPS→HTTPS,或者HTTP→HTTP)则在Referrer
中显示完整的源网站的URL信息。 - Referrer-Policy: origin——表示浏览器在
Referrer
字段中只显示源网站的源地址(即协议、域名、端口),而不包括完整的路径。 - Referrer-Policy: origin-when-cross-origin——当发请求给同源网站时,浏览器会在
Referrer
中显示完整的URL信息,发个非同源网站时,则只显示源地址(协议、域名、端口) - Referrer-Policy: same-origin——表示浏览器只会显示
Referrer
信息给同源网站,并且是完整的URL信息。所谓同源网站,是协议、域名、端口都相同的网站。 - Referrer-Policy: strict-origin——该策略更为安全些,和
origin
策略相似,只是不允许Referrer
信息显示在从https网站到http网站的请求中(安全降级)。
- Referrer-Policy: strict-origin-when-cross-origin——和
origin-when-cross-origin
相似,只是不允许Referrer
信息显示在从https网站到http网站的请求中(安全降级)。
- Referrer-Policy: unsafe-url——浏览器总是会将完整的URL信息显示在
Referrer
字段中,无论请求发给任何网站。
若设为空串则默认no-referrer-when-downgrade
现在是采用no-referrer-when-downgrade,
也就是大部分情况下是可以显示完整的链接的。
Chrome 85的调整
Chrome在7月份底公布,Chrome 85对Referrer-Policy调整,默认由于no-referrer-when-downgrade
调整为strict-origin-when-cross-origin,测试版将于2020年7月发布,稳定版将于2020年8月发布。
同个主域之前是没有影响,但是不同主域之前的就是有影响,比如从A网站跳转到B网站的时候就有些不同的了。
调整前
调整前,Chrome浏览器默认策略的策略是no-referrer-when-downgrade
这时候Referral的传递是可以获取完整的URL。
调整后
调整后,Chrome浏览器默认策略的策略是strict-origin-when-cross-origin
只能获取到hostname主域了。
影响
如果网站有设置策略,则按网站的策略,如果没有设置则Chrome将strict-origin-when-cross-origin
默认使用 。
对一些依赖Referral分析的会有影响,如服务器日志分析、网站分析工具。如在没有使用UTM的时候,之前可以通过Referral知道这个流量来自于哪个网站的具体某个页面,但现在只能知道来源哪个网站,百度统计已经提示:
如何应用
这是浏览器层面的,不是你可以把控的,而且还是上一级的来源,都不是你的站点,需要设置Referrer-Policy的是上一级的网站,你无能为力。
唯有整个行业都主动设置Referrer-Policy,如设置为no-referrer-when-downgrade,
不让其默认为strict-origin-when-cross-origin
,那就可以获取完整的Full Referral。
参考
https://developers.google.com/web/updates/2020/07/referrer-policy-new-chrome-default