Google85版本后referer的丢失

最近在开发中发现了一个问题,就是之前我们平台的是嵌套在省公司的平台,每次用户信息的获取是从大菜单第一次跳转的请求头内的referer中获取,每次需要从中进行用户信息的鉴权.但是在国庆来了后,突然发现很多用户的无法进行正常的鉴权操作,导致使用量急剧下降.
在一番测试之后发现了,高版本的Google浏览器普遍出现referer的丢失,低版本是可以正常的使用.从中分析,应该是Google浏览器的版本问题,就去解读最近的Google浏览器更新的版本.果不其然,

在Google 8.5版本之后,原本默认的 referer 策略(policy)是no-referrer-when-downgrade,即允许referer带上来源页面地址上的请求参数,Chrome85+将策略修改为strict-origin-when-cross-origin,即如果请求地址与请求页面非同源,将只携带请求的域名,不会再带上来源页面地址的请求参数。

那如何解决呢,可以在html里设置

<metaname="referrer"content="no-referrer-when-downgrade"/>

也可以在nginx设置header,这样就不用重新上线了

add_header Referrer-Policy no-referrer-when-downgrade;

总结:

Syntax
Referrer-Policy: no-referrer
Referrer-Policy: no-referrer-when-downgrade
Referrer-Policy: origin
Referrer-Policy: origin-when-cross-origin
Referrer-Policy: same-origin
Referrer-Policy: strict-origin
Referrer-Policy: strict-origin-when-cross-origin
Referrer-Policy: unsafe-url
no-referrer

整个 Referer 首部会被移除。访问来源信息不随着请求一起发送

no-referrer-when-downgrade (默认值)

在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别的情况下,引用页面的地址会被发送(HTTPS->HTTPS),但是在降级的情况下不会被发送 (HTTPS->HTTP)。
origin
在任何情况下,仅发送文件的源作为引用地址。例如 https://example.com/page.html 会将 https://example.com/ 作为引用地址。
origin-when-cross-origin
对于同源的请求,会发送完整的URL作为引用地址,但是对于非同源请求仅发送文件的源。
same-origin
对于同源的请求会发送引用地址,但是对于非同源请求则不发送引用地址信息
strict-origin
在同等安全级别的情况下,发送文件的源作为引用地址(HTTPS->HTTPS),但是在降级的情况下不会发送 (HTTPS->HTTP)。
strict-origin-when-cross-origin
对于同源的请求,会发送完整的URL作为引用地址;在同等安全级别的情况下,发送文件的源作为引用地址(HTTPS->HTTPS);在降级的情况下不发送此首部 (HTTPS->HTTP)。
unsafe-url
无论是同源请求还是非同源请求,都发送完整的 URL(移除参数信息之后)作为引用地址。(最不安全的策略了)

©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页