推荐答案
Referrer Policy 用于控制浏览器在发送请求时如何处理 Referer
头部信息。通过配置 Referrer Policy,开发者可以决定是否发送 Referer
头部,以及发送多少信息,从而保护用户隐私或满足特定需求。
配置方法
Referrer Policy 可以通过以下方式配置:
HTTP 头部:
Referrer-Policy: no-referrer
HTML
<meta>
标签:<meta name="referrer" content="no-referrer">
JavaScript:
document.referrerPolicy = "no-referrer";
常用策略
no-referrer
:不发送Referer
头部。no-referrer-when-downgrade
(默认):在从 HTTPS 降级到 HTTP 时不发送Referer
头部。origin
:只发送源(协议+主机+端口),不包含路径和查询参数。origin-when-cross-origin
:跨域时只发送源,同域时发送完整 URL。same-origin
:只在同域请求时发送Referer
头部。strict-origin
:在从 HTTPS 降级到 HTTP 时不发送Referer
头部,且只发送源。strict-origin-when-cross-origin
:跨域时只发送源,同域时发送完整 URL,且在降级时不发送Referer
头部。unsafe-url
:始终发送完整 URL,即使是从 HTTPS 降级到 HTTP。
本题详细解读
作用
Referrer Policy 的主要作用是控制浏览器在发送请求时如何处理 Referer
头部信息。Referer
头部通常包含请求来源的 URL,可能包含敏感信息。通过配置 Referrer Policy,开发者可以:
- 保护用户隐私:防止敏感信息泄露。
- 优化性能:减少不必要的头部信息传输。
- 满足安全需求:防止跨站请求伪造(CSRF)等攻击。
配置方法详解
HTTP 头部:
- 通过服务器配置,适用于整个网站或特定页面。
- 示例:
Referrer-Policy: no-referrer
HTML
<meta>
标签:- 适用于单个页面,优先级低于 HTTP 头部。
- 示例:
<meta name="referrer" content="no-referrer">
JavaScript:
- 动态设置,适用于需要运行时调整的场景。
- 示例:
document.referrerPolicy = "no-referrer";
策略详解
no-referrer
:完全不发送Referer
头部,适用于高度隐私保护场景。no-referrer-when-downgrade
:默认策略,在 HTTPS 降级到 HTTP 时不发送Referer
头部,适用于大多数场景。origin
:只发送源信息,适用于需要保护路径和查询参数的场景。origin-when-cross-origin
:跨域时只发送源,同域时发送完整 URL,适用于需要平衡隐私和功能的场景。same-origin
:只在同域请求时发送Referer
头部,适用于严格同源策略的场景。strict-origin
:在从 HTTPS 降级到 HTTP 时不发送Referer
头部,且只发送源,适用于需要严格安全控制的场景。strict-origin-when-cross-origin
:跨域时只发送源,同域时发送完整 URL,且在降级时不发送Referer
头部,适用于需要严格安全控制和功能平衡的场景。unsafe-url
:始终发送完整 URL,即使是从 HTTPS 降级到 HTTP,适用于需要完整 URL 信息的场景,但存在安全风险。