link标签加referrerpolicy有用,但仅对rel="preload"、rel="stylesheet"、rel="fontpreload"等触发网络请求的用法生效,对rel="canonical"或rel="icon"等无效;值需按资源校验需求选择,如no-referrer防403、origin保域不泄路径、strict-origin-when-cross-origin为推荐默认值,且必须小写、显式写在每个link标签上。

link标签加referrerpolicy到底有没有用
有用,但只对发起的**资源加载请求**生效,比如预加载(rel="preload")、样式表(rel="stylesheet")、字体(rel="fontpreload")等;它对rel="canonical"、rel="icon"这类不触发网络请求的用法无效。浏览器解析到<link>时若需发起 HTTP 请求,才会读取并应用该属性。
哪些referrerpolicy值适合link标签
常见组合取决于目标资源是否校验 Referer:
-
no-referrer:字体或 CDN 样式常因 Referer 不匹配返回 403,清空最稳妥 -
origin:适合第三方 CSS 托管服务(如 fonts.googleapis.com),只需识别来源域,不暴露路径 -
strict-origin-when-cross-origin:推荐作为默认值——同域保留完整路径便于调试,跨域 HTTPS 只发https://yourdomain.com,HTTPS→HTTP 则不发 -
unsafe-url:禁用。它会把?v=1.2.3&token=abc这类参数原样发给 CDN,有严重泄露风险
为什么不能继承
<meta name="referrer">仅作用于「导航行为」(如点击链接、表单提交),而<link>资源加载发生在 HTML 解析早期,此时<meta>尚未被解析执行,完全不生效。必须显式写在每个<link>上:
<link rel="stylesheet" href="https://cdn.com/main.css" referrerpolicy="origin"><link rel="preload" as="font" href="https://fonts.com/roboto.woff2" referrerpolicy="no-referrer">
大小写敏感:no-referrer有效,No-Referrer或no_referrer会被浏览器静默忽略,退化为默认策略no-referrer-when-downgrade。
容易被忽略的兼容性与失效场景
几个真实踩坑点:
- 右键“在新标签页打开”
<link rel="canonical">?没用——<link>本身不支持用户交互,这个操作根本不会触发它的请求 - 动态插入的
<link>(如 JS 创建后 append 到 head):referrerpolicy依然生效,但必须在href赋值前设置,否则部分浏览器可能忽略 - HTTP → HTTPS 跳转时,
strict-origin和strict-origin-when-cross-origin行为不同:前者跨域 HTTP→HTTPS 仍只发 origin;后者在此场景下会发完整 URL(因非“降级”) - 某些企业防火墙或安全插件会强制重写 Referer,导致你看到 Network 面板里字段为空,但服务器实际收到的是被篡改后的值——验证必须抓包或用本地服务接收原始 header
真正兜底的不是 HTML 属性,而是后端响应头Referrer-Policy: strict-origin-when-cross-origin,它覆盖所有请求类型,包括 JS 的fetch()和字体加载,且不受右键、动态插入等行为干扰。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











