strict的用法(Chrome 新的默认 Referrer-Policy : strict-origin-when-cross-origin)

strict的用法

如果你的站点有使用 Referer 标头收集网页的访问来源信息,则此策略变化可能对你的程序造成影响,请仔细阅读。
在开始阅读本文之前,如果你不理解 site 和 origin 之间的关系,请阅读:同站和同源你理解清楚了么?
Referer 标头Referer 请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。
服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。
这里有意思的一点:referer 实际上是 “referrer” 误拼写。Referrer-Policy 标头以及 JavaScript 中的 referrer 拼写是没有问题的。
Referer-PolicyReferer 请求头可能暴露用户的浏览历史,涉及到用户的隐私问题。所以 HTTP 提供了 Referrer-Policy 标头,其用来监管和限制哪些访问来源信息会在 Referer 中发送(应该被包含在生成的请求当中)。
Referer-Policy 包括以下几个可选项
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(移除参数信息之后)作为引用地址。
Referer-Policy 默认值如果 Referer-Policy 未设置任何策略,则使用浏览器的默认值。网站通常会遵循浏览器的默认设置。
对于导航和 iframe, Referer 头中的数据也可以通过 JavaScript 使用 document.referrer 访问。
no-referrer-when-downgrade 是跨浏览器的一种广泛的默认策略。但是现在,许多浏览器正处于向更多提高隐私的默认设置过渡的阶段。
Chrome 计划在85版开始 将其切换默认策略 no-referrer-when-downgrade 更换到 strict-origin-when-cross-origin。
变化strict-origin-when-cross-origin 提供更多的隐私。有了这个政策,Referer 标头只会发送 origin
这样可以防止泄漏私人数据,这些数据可以从完整URL的其他部分(例如路径和查询字符串)访问。
例如,在一个跨域请求中:
从 https://site-one.example/stuff/detail?tag=red 访问 https://site-two.example/…
使用 no-referrer-when-downgrade: Referer: https://site-one.example/stuff/detail?tag=red。使用 strict-origin-when-cross-origin: Referer: https://site-one.example/。不变的和 no-referrer-when-downgrade 一样, strict-origin-when-cross-origin 在从 HTTPS 来源访问 HTTP 站点时,不会携带 Referer 头。在相同的来源内,Referer 标头值为完整的 URL 。

点赞、在看、分享支持作者??

strict的用法相关文章

版权声明

为您推荐