referrer策略是控制http请求中referer头发送行为的机制,不能用html全局设置是因为html无标准全局语法,已废弃的不可靠,唯一可靠方式是referrer-policy http响应头。

什么是 referrer 策略,为什么不能用 HTML 全局设置?
HTML 本身没有“全局 referrer 策略”的声明式语法。你可能在 <meta> 或 里搜过类似写法,但实际生效的只有 <meta name="referrer" content="..."> —— 这是已废弃的旧规范(Referrer Policy W3C Recommendation 2017 年起就不再推荐),现代浏览器只支持标准的 Referrer-Policy HTTP 响应头或 referrerpolicy 属性。
<meta name="referrer"> 还能用吗?
能,但行为不可靠:
- Chrome 86+、Firefox 90+ 已完全忽略
<meta name="referrer"> - Safari 仍部分支持,但仅限
no-referrer和origin两个值,其他如strict-origin-when-cross-origin会被静默降级 - 该 meta 标签不支持 CSP-style 的策略组合,也无法覆盖
<a></a>、<img>、<script></script>等元素上显式设置的referrerpolicy属性
真正有效的全局控制方式:HTTP 响应头
唯一被所有现代浏览器一致支持的全局 referrer 策略,是通过服务器返回的 Referrer-Policy HTTP 响应头。它作用于整个文档及其所有子资源请求(fetch、img、iframe、script 等)。
常见取值及影响:
-
no-referrer:所有请求都不带Referer头(最严格,可能影响某些依赖来源校验的 API) -
strict-origin-when-cross-origin:跨域时只发 origin(如https://a.com),同域保留完整路径;且仅当协议升级(HTTP→HTTPS)时才不发(推荐默认值) -
same-origin:仅同源请求携带完整 referrer,跨域不带 -
origin:所有请求都只发 origin,不带路径和 query
示例(Nginx 配置):
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
add_header Referrer-Policy "strict-origin-when-cross-origin";
注意:该头对 `<iframe></iframe>` 内嵌页面无效(需目标页面自己设置);也不影响 `window.open()` 新窗口的 referrer(由 opener 控制)。
局部覆盖:用 referrerpolicy 属性精细化控制
当全局策略不够细粒度时,可在具体标签上覆盖:
-
<a href="https://example.com" referrerpolicy="no-referrer"></a>:点击时不发送 referrer -
<img src="api/log.png" referrerpolicy="origin">:图片请求只发 origin -
<script src="lib.js" referrerpolicy="same-origin"></script>:仅同源 script 才带 referrer
注意:referrerpolicy 属性值必须小写,且只对当前元素生效;若与 HTTP 头冲突,属性优先级更高;但不支持 <link rel="stylesheet">(CSS 请求始终遵循 HTTP 头)。
容易被忽略的是:动态创建的元素(如 JS 用 document.createElement('img'))不会自动继承全局策略,必须手动设 element.referrerPolicy = 'origin'(注意拼写是 referrerPolicy,不是 referrerpolicy)。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










