referrerpolicy属性必须显式加在主动发起请求的HTML标签(如、<img>、<script>、<link>、<iframe>、<form>)上才生效,对<div>等容器标签无效,且仅作用于该元素单次请求;<meta name="referrer">在现代浏览器中已基本失效,无法控制fetch()、右键新标签页等场景。

referrerpolicy 属性必须加在具体资源标签上,不是 里
加在 <meta name="referrer"> 里基本无效——Chrome 85+、Firefox 90+ 已完全忽略它,且它只影响 HTML 解析后自动加载的 <img>、<script> 等,对 fetch()、右键新标签页、表单提交、页面跳转全都不管用。
真正起效的写法是直接给发起请求的标签加属性:
<img src="https://cdn.example.com/logo.png" referrerpolicy="origin"><script src="https://cdn.example.com/analytics.js" referrerpolicy="strict-origin-when-cross-origin"></script><a href="https://partner.com/offer" referrerpolicy="no-referrer">合作入口</a><iframe src="https://embed.widget.com" referrerpolicy="origin"></iframe>
注意:referrerpolicy 是 HTML 属性名,不是 name 值;大小写敏感,拼错(如 origin-when-crossorigin 少个 -)会被静默降级为 no-referrer-when-downgrade,导致敏感路径泄露。
图片 403?先确认 CDN 是否校验 Referer,再选对值
CDN 或图床返回 403,大概率是服务端校验了 Referer 请求头,而你设的策略和它白名单不匹配。比如:
- CDN 要求
Referer: https://yoursite.com/*(完整路径),你却用了referrerpolicy="origin"→ 实际发的是https://yoursite.com→ 校验失败 - CDN 只认
https://yoursite.com,你用了no-referrer→ Referer 头消失 → 校验失败 - CDN 支持通配符但没开,或把根路径
/加进了白名单,结果valid_referers没配none→ 所有无 Referer 的请求都被拒
调试方法:打开 DevTools → Network → 点开报错图片请求 → Headers → 查看 Request Headers 中 Referer 字段是否存在、内容是否符合预期。若看到 X-Referer-Rejected 类响应头,基本可锁定是服务端规则问题。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
立即学习“前端免费学习笔记(深入)”;
哪些标签支持 referrerpolicy?哪些不支持?
只对「主动发起网络请求」的标签生效,且每个标签独立控制:
- 支持:
<a>(跳转)、<img>(加载)、<script>(执行)、<link rel="stylesheet">、<link rel="preload">、<iframe>(内部 JS 发起的请求)、<form>(GET/POST 提交) - 不支持:
<div>、<p>、<span>等纯容器标签,浏览器直接忽略 - 特别注意:
<iframe>的referrerpolicy控制的是 iframe 内部脚本向外发起的请求,不是父页面向 iframe 发请求时的 Referer - 动态创建的元素(如 JS 用
document.createElement('img')插入)不继承该属性,需手动设置
referrerpolicy 和 HTTP 响应头 Referrer-Policy 的关系
两者不是替代关系,而是分层协作:
- HTTP 响应头
Referrer-Policy: strict-origin-when-cross-origin由后端统一配置,覆盖所有本域发起的请求(包括fetch()、XMLHttpRequest、资源加载),优先级高于 HTML 属性 -
referrerpolicy属性只作用于对应标签,无法影响 JS 发起的请求,但它能控制用户点击外链的行为——这是响应头管不到的场景 - 如果服务端设置了响应头,单个
<img>的referrerpolicy可能被覆盖,除非你设的是no-referrer(它的优先级最高) - 真正防别人盗你资源,靠前端删 Referer 没用;必须配合 Nginx 的
valid_referers或 CDN 的 Referer 黑白名单
最易被忽略的一点:防盗链本质是服务端的事。只要资源 URL 是公开可访问的,且服务端没做校验,加再多 referrerpolicy 也拦不住爬虫或 curl 直接请求。


















