referrerpolicy属性仅控制Referer请求头中URL信息的裁剪,必须加在发起请求的HTML标签上(如、、、、、),局部设置优先级高于或响应头;strict-origin-when-cross-origin比默认no-referrer-when-downgrade更安全,因跨源时只发origin而非完整URL,防止敏感参数泄露。

referrerpolicy 属性不是用来“控制元数据泄露”的泛称工具,它只管一件事:浏览器在发起请求时,往 Referer 请求头里塞多少 URL 信息。它不处理其他元数据(如 User-Agent、Sec-Fetch-*、cookies 或 JS 上下文),也不加密或过滤内容——只是裁剪 URL。
referrerpolicy 应该加在哪些 HTML 标签上?
它必须加在实际发起网络请求的标签上,不是全局声明:
-
@#@#@#@#@#@#@#@#@#@0跳到@#@#@#@#@#@#@#@#@#@1,对方收到的Referer是完整带参 URL - 而
strict-origin-when-cross-origin在同样场景下只发@#@#@#@#@#@#@#@#@#@2
关键差异点:
- 同源请求:两者都发完整 URL
- 跨源请求:
no-referrer-when-downgrade发完整 URL(只要目标是 HTTPS);strict-origin-when-cross-origin只发 origin(协议+域名+端口) - 协议降级(HTTPS → HTTP):两者都不发 Referer
所以,只要涉及跨域跳转,尤其含 query 参数的页面,就该显式设为 strict-origin-when-cross-origin。
rel="noreferrer" 比 referrerpolicy="no-referrer" 更彻底
两者都清 Referer,但区别明显:
-
referrerpolicy="no-referrer":只清 Referer 头,window.opener仍可被新开页访问(存在反向控制风险) -
rel="noreferrer":自动附带noopener行为,切断window.opener引用,防钓鱼与 XSS 扩展攻击
实际写法应为:
<a href="https://thirdparty.com" rel="noreferrer" target="_blank">跳转</a>
注意:如果只写 rel="noreferrer" 而没写 target="_blank",noopener 不生效(浏览器忽略)。
referrerpolicy 是个局部开关,它不替代后端响应头 Referrer-Policy,也不能覆盖 JS 发起的请求。真正要堵住 Referer 泄露,得三层配合:后端统一配响应头 + 关键外链加 rel="noreferrer" + 敏感资源标签显式设策略。漏掉任何一层,都可能让一个 query 参数悄悄溜出去。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











