referrerpolicy属性在HTML中可选值包括:no-referrer、no-referrer-when-downgrade、origin、origin-when-cross-origin、same-origin、strict-origin、strict-origin-when-cross-origin、unsafe-url,其中no-referrer和origin最常用于iframe场景,分别实现完全不发送Referer头和仅发送源站信息。

referrerpolicy 属性值有哪些可选值
HTML iframe 的 referrerpolicy 控制的是该 iframe 向其 src 地址发起请求时,Referer 请求头是否发送、发什么内容。它不是所有浏览器都默认一致,必须显式设置才可靠。
常用合法值有:"no-referrer"、"no-referrer-when-downgrade"、"origin"、"origin-when-cross-origin"、"same-origin"、"strict-origin"、"strict-origin-when-cross-origin"、"unsafe-url"。其中 "no-referrer" 和 "origin" 是最常用于 iframe 场景的两个。
-
"no-referrer":完全不带Referer头,最隐私,但可能被某些第三方资源拒绝加载(比如依赖 Referer 校验的图片 CDN) -
"origin":只发源站协议+域名+端口(如https://a.com),不带路径和参数,平衡安全与兼容性,推荐作为默认选择 -
"strict-origin-when-cross-origin":同站发完整 Referer,跨站只发 origin,但部分旧版 Safari 对 iframe 支持不稳定
iframe 中 referrerpolicy 不生效的常见原因
即使写了 referrerpolicy="origin",也可能没效果——这不是属性写错了,而是被更高优先级策略覆盖了。
- 父页面设置了
<meta name="referrer" content="no-referrer">,会全局压制所有子资源(包括 iframe)的 referrer 行为 - 父页面通过
Referrer-PolicyHTTP 响应头设置了 stricter 策略(如no-referrer),它比 HTML 属性优先级更高 - iframe 的
src是javascript:、data:或空字符串等非 HTTP(S) 协议,此时referrerpolicy被忽略 - 在 Chrome 94+ 中,如果 iframe 同时设置了
sandbox属性且未包含"allow-scripts",referrerpolicy可能被静默忽略
如何验证 referrerpolicy 是否真正起作用
不能只看 HTML 是否写了属性,得看实际网络请求头。打开 DevTools → Network → 切到 iframe 的 src 请求 → 查看 Headers 标签页下的 Request Headers 区域:
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
- 若看到
Referer: https://example.com/path,说明策略宽松(如未设或设为"unsafe-url") - 若看到
Referer: https://example.com,且请求是跨源的,大概率是"origin"或"origin-when-cross-origin"生效了 - 若完全没
Referer字段,可能是"no-referrer",也可能是被 meta 或响应头覆盖了
注意:本地文件(file:// 协议)下测试时,大多数浏览器强制使用 "no-referrer",结果不可信,务必用本地 server(如 python3 -m http.server)跑。
与其他安全属性配合使用的注意事项
referrerpolicy 经常和 sandbox、allow、csp 一起用,但它们之间有隐含约束:
-
sandbox="allow-scripts"+referrerpolicy="no-referrer"是安全组合;但如果加了"allow-same-origin",iframe 内脚本就能读取父页面 URL,此时再设"no-referrer"就意义不大 - 若 iframe 加载的是同一站点下的资源(同源),
referrerpolicy默认仍受父页面策略影响,不会自动降级为宽松行为 - CSP 的
reflected-xss或referrer指令不控制 iframe 的 Referer 发送逻辑,别混淆
真正容易被忽略的是:当 iframe 动态创建(document.createElement('iframe'))后设置 referrerpolicy,必须在设置 src 之前完成赋值,否则无效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










