Referrer-Policy
Referrer-Policy HTTP 标头 控制发送请求时包含多少 引用者信息(通过 Referer 标头发送)。除了 HTTP 标头外,您还可以 在 HTML 中设置此策略。
语法
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
注意:原始标头名称 Referer 是“referrer”(引用者)一词的拼写错误。Referrer-Policy 标头没有此拼写错误。
指令
no-referrer-
将省略
Referer标头:发送的请求不包含任何引用者信息。 no-referrer-when-downgrade-
当协议安全级别保持不变或提高时(HTTP→HTTP、HTTP→HTTPS、HTTPS→HTTPS),在
Referer中发送 来源、路径和查询字符串。对于发送到安全性较低的目的地(HTTPS→HTTP、HTTPS→file)的请求,不要发送Referer标头。 origin-
仅在
Referer标头中发送 来源。例如,https://example.com/page.html中的文档将发送引用者https://example.com/。 origin-when-cross-origin-
当对同一协议级别执行 同源 请求时(HTTP→HTTP、HTTPS→HTTPS),发送 来源、路径和查询字符串。对于跨源请求以及发送到安全性较低的目的地(HTTPS→HTTP)的请求,仅发送来源。
same-originstrict-origin-
当协议安全级别保持不变时(HTTPS→HTTPS),仅发送来源。对于发送到安全性较低的目的地(HTTPS→HTTP)的请求,不要发送
Referer标头。 strict-origin-when-cross-origin(默认值)-
执行同源请求时,发送来源、路径和查询字符串。对于跨源请求,当协议安全级别保持不变时(HTTPS→HTTPS),仅发送来源。对于发送到安全性较低的目的地(HTTPS→HTTP)的请求,不要发送
Referer标头。注意:如果未指定策略,或提供的策略值无效(请参阅规范修订版 2020年11月),则此为默认策略。以前,默认值为
no-referrer-when-downgrade。 unsafe-url-
执行任何请求时,无论安全性如何,均发送来源、路径和查询字符串。
警告:此策略会将 HTTPS 资源 URL 中的潜在隐私信息泄露到不安全的来源。请仔细考虑此设置的影响。
与 HTML 集成
您还可以在 HTML 内部设置引用者策略。例如,您可以使用 <meta> 元素(其 name 为 referrer)为整个文档设置引用者策略
<meta name="referrer" content="origin" />
您可以在 <a>、<area>、<img>、<iframe>、<script> 或 <link> 元素上指定 referrerpolicy 属性,以针对各个请求设置引用者策略
<a href="http://example.com" referrerpolicy="origin">…</a>
或者,您可以在 a、area 或 link 元素上设置 noreferrer 链接关系
<a href="http://example.com" rel="noreferrer">…</a>
警告:如上所示,noreferrer 链接关系的写法不带连字符。当您使用 <meta> 元素为整个文档指定引用者策略时,应带连字符编写:<meta name="referrer" content="no-referrer">。
与 CSS 集成
示例
no-referrer
| 来自文档 | 导航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
任何地方 | (无引用者) |
no-referrer-when-downgrade
| 来自文档 | 导航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://example.com/otherpage |
https://example.com/page |
https://example.com/page |
https://mozilla.org |
https://example.com/page |
https://example.com/page |
http://example.com | (无引用者) |
origin
| 来自文档 | 导航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
任何地方 | https://example.com/ |
origin-when-cross-origin
| 来自文档 | 导航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://example.com/otherpage |
https://example.com/page |
https://example.com/page |
https://mozilla.org |
https://example.com/ |
https://example.com/page |
http://example.com/page | https://example.com/ |
same-origin
| 来自文档 | 导航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://example.com/otherpage |
https://example.com/page |
https://example.com/page |
https://mozilla.org |
(无引用者) |
strict-origin
| 来自文档 | 导航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://mozilla.org |
https://example.com/ |
https://example.com/page |
http://example.com | (无引用者) |
| http://example.com/page | 任何地方 | http://example.com/ |
strict-origin-when-cross-origin
| 来自文档 | 导航到 | 使用的引用者 |
|---|---|---|
https://example.com/page |
https://example.com/otherpage |
https://example.com/page |
https://example.com/page |
https://mozilla.org |
https://example.com/ |
https://example.com/page |
http://example.com | (无引用者) |
unsafe-url
| 来自文档 | 导航到 | 使用的引用者 |
|---|---|---|
https://example.com/page?q=123 |
任何地方 | https://example.com/page?q=123 |
指定回退策略
如果要指定回退策略(以防所需策略的浏览器支持范围不够广),请使用逗号分隔的列表,并将所需策略指定在最后
Referrer-Policy: no-referrer, strict-origin-when-cross-origin
在上述情况下,仅当浏览器不支持 strict-origin-when-cross-origin 策略时,才会使用 no-referrer。
注意:仅在 Referrer-Policy HTTP 标头中支持指定多个值,在 referrerpolicy 属性中不支持。
浏览器特定偏好/设置
Firefox 首选项
您可以在 Firefox 首选项中配置默认引用者策略。首选项名称因版本而异
- Firefox 59 及更高版本:
network.http.referer.defaultPolicy(以及专用网络的network.http.referer.defaultPolicy.pbmode) - Firefox 53 到 58 版本:
network.http.referer.userControlPolicy
所有这些设置都采用相同的取值范围:0 = no-referrer、1 = same-origin、2 = strict-origin-when-cross-origin、3 = no-referrer-when-downgrade。
规范
| 规范 |
|---|
| 引用者策略 # referrer-policy-header |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。