Referrer-Policy的核心作用是限制、缩减或移除Referer请求头信息,防止敏感路径和参数泄露;通过响应头(如strict-origin-when-cross-origin)全局设置最可靠,局部可用referrerpolicy属性精细化控制,禁用unsafe-url。

在 HTML5 中,Referrer-Policy 不是用来“伪造”或“自定义”来源地址的工具,它的核心作用是**限制、缩减或移除 Referer 请求头中携带的信息量**,从而防止敏感路径、查询参数(如 ?token=abc、?user_id=123)被无意泄露给第三方站点。实现精确控制的关键在于:选择合适策略 + 明确作用范围(全局 or 局部)+ 避免配置冲突。
优先使用响应头设置全局策略
最可靠、覆盖最全的方式是在服务器返回的 HTTP 响应头中添加:
-
Referrer-Policy: strict-origin-when-cross-origin—— 推荐作为默认策略:同源请求发完整 URL;跨源时只发源(https://a.com),且 HTTPS→HTTP 降级时不发送;兼顾安全与功能。 -
Referrer-Policy: no-referrer—— 适用于高度敏感页面(如支付结果页、含会话令牌的跳转页),彻底不发 Referer。 - 避免用
unsafe-url:它强制发送完整 URL(含路径和参数),存在严重隐私风险,不应在生产环境使用。
对特定链接或资源做局部精细化控制
当全局策略不够灵活时,可在单个 HTML 元素上用 referrerpolicy 属性覆盖:
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
-
<a href="https://partner.com" referrerpolicy="origin">合作入口</a>→ 跳转时只传https://your-site.com,不带路径和参数。 -
<img src="https://cdn.example.com/photo.jpg" referrerpolicy="no-referrer" alt="如何在HTML5中利用ReferrerPolicy精确控制页面跳转时的来源信息泄露" >→ 防止图片请求暴露当前页面 URL(常用于防盗链或隐私页)。 -
<iframe src="https://embed.service.com/widget" referrerpolicy="same-origin"></iframe>→ 仅同源嵌入才传 Referer,跨源完全不传。
慎用 meta 标签,注意优先级与局限性
可通过 <meta name="referrer" content="origin"> 在 中声明全局策略,但它有明显限制:
立即学习“前端免费学习笔记(深入)”;
- 只影响该 HTML 文档发起的导航请求(如点击链接、表单提交),不影响后续 JS 发起的 fetch 或 XMLHttpRequest。
- 若同时设置了 HTTP 响应头,响应头的值具有更高优先级,
meta会被忽略。 - 不支持所有策略值(例如
strict-origin-when-cross-origin在部分旧浏览器中可能不被识别)。
验证是否生效的实用方法
别只看代码,务必实测:
- 打开 Chrome DevTools → Network 标签页 → 点击一个外链 → 找到对应请求 → 查看 Request Headers 中的 Referer 字段是否存在、内容是否符合预期。
- 对敏感页面(如
/dashboard?session=xxx),点击外链后检查目标站是否收到完整 URL;若策略正确,应只看到源或为空。 - 注意:
rel="noreferrer"是另一种手段,它等效于referrerpolicy="no-referrer",但仅作用于<a></a>标签,且会自动启用noopener(更安全)。


















