strict-origin-when-cross-origin最适合隐私保护,因它同源发全url、跨源https仅发源、https→http不发referer,精准防敏感参数泄露。

用 referrerpolicy="strict-origin-when-cross-origin" 是最实用、平衡安全与功能的方案,它能在跨域跳转时自动剥离路径和查询参数,只保留协议+域名+端口,避免泄露敏感信息如 ?uid=123&token=abc 这类内容。
为什么 strict-origin-when-cross-origin 最适合隐私保护
这个策略精准区分三种常见场景:
-
同源跳转(比如从
https://shop.example.com/cart到https://shop.example.com/checkout):发送完整 URL,不影响内部导航逻辑 -
跨源 HTTPS 跳转(比如从
https://shop.example.com/checkout?uid=123&token=abc到https://pay.gateway/submit):只发https://shop.example.com,路径和参数彻底隐藏 - HTTPS → HTTP 降级:完全不发 Referer,防止明文传输敏感来源
怎么加?加在哪儿?
必须加在发起跳转的 HTML 元素上,不是全局设置。对链接最常用的是 @#@#@#@#@#@#@#@#@#@0
其他常见位置包括:<img>、<script></script>、<iframe></iframe>、<form></form> 和 <link>。每个标签独立生效,局部设置优先级高于页面级 <meta> 或响应头。
别踩这些坑
几个容易出错的关键点:
- 只给链接加了
referrerpolicy,但用户右键“在新标签页打开”,浏览器会忽略该策略——此时需配合rel="noreferrer"才能真正生效 -
referrerpolicy不影响新页面里后续发出的请求,比如跳转后页面内 JS 调用fetch(),那些请求的 Referer 由新页面自身的策略或响应头控制 - 不要用
unsafe-url,它强制发送完整 URL,会把 token、session_id 等直接暴露给第三方 - 如果目标是 HTTP 页面,而当前页是 HTTPS,部分浏览器(如 Chrome)可能降级为
no-referrer-when-downgrade行为,不能完全依赖前端属性
比单纯 referrerpolicy 更稳妥的做法
关键外链建议组合使用:
rel="noreferrer" 比 referrerpolicy="no-referrer" 更彻底:它不仅清空 Referer,还隐式启用 noopener,防止新开页面通过 window.opener 反向操控原页面,安全收益更高。后端同时配置响应头 Referrer-Policy: strict-origin-when-cross-origin,形成前后端双保险。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











