不能防别人盗用资源,仅控制本页发出的子资源请求(如、)不带referer,对他人嵌入你的资源无效,防盗链必须由服务端校验referer或origin头实现。

meta name="referrer" 能不能防别人盗你资源
不能。加 <meta name="referrer" content="no-referrer"> 只影响你页面发出的请求,不阻止别人把你的图片、JS 拿去用。防盗链真正的控制点在服务端——别人请求你的资源时,你校验它的 Referer 或 Origin 头,不合法就返回 403。
常见误解是:「我加了 meta,别人就扒不了我的图」。实际效果只是让自己的页面请求第三方资源时不带 Referer,对别人嵌入你的资源毫无约束力。
- 它只作用于 HTML 解析后自动发起的子资源请求(
<img>、<script></script>、<iframe></iframe>) - 对用户点击跳转、
window.location.href、表单提交等导航行为完全无效 - Chrome 85+ 和 Firefox 90+ 已默认忽略
name="referrer",仅支持referrerpolicy属性或响应头
referrerpolicy 属性该写在哪、怎么写才生效
必须写在具体资源标签上,而不是 <meta> 里。浏览器根本不认 <meta name="referrer"> 的现代写法,但支持每个资源标签自带的 referrerpolicy 属性。
正确写法示例:
@@##@@ <script src="https://cdn.example.com/lib.js" referrerpolicy="strict-origin-when-cross-origin"></script>
-
referrerpolicy值区分大小写,常用值有:no-referrer、origin、strict-origin-when-cross-origin - 写在
里的<link rel="stylesheet">也支持该属性,但部分老浏览器对<link>的支持弱于<img src="https://cdn.example.com/photo.jpg?x-oss-process=image/resize,p_40" referrerpolicy="no-referrer">和<script></script> - 如果同时设置了 HTTP 响应头
Referrer-Policy,它会覆盖所有 HTML 中的referrerpolicy属性
为什么你加了 meta 却没效果
不是代码写错,而是优先级和时机问题。最常踩的坑是:
-
<meta name="referrer">必须放在最前面,否则它之前已发出的资源请求(比如 favicon、preload 的脚本)按默认策略发出去了 - 服务端返回了
Referrer-Policy响应头(如strict-origin),浏览器直接无视<meta>标签 - 你在调试时看的是图片请求的响应状态,但没检查 Network 面板里该请求的 Request Headers —— 如果能看到
Referer字段,说明 meta 没生效;如果字段为空,才说明起效了 - 目标服务器配置了「拒绝空 Referer」,那
no-referrer反而触发 403,这时候得联系对方白名单或换资源源站
CSP 的 script-src 能不能靠 meta 标签限制外链 JS
不能。浏览器明确忽略 <meta http-equiv="Content-Security-Policy" content="script-src 'self'"> 中的 script-src 指令。这是规范限制,不是兼容性问题。
只有 HTTP 响应头里的 Content-Security-Policy 才真正生效,且必须由服务端注入:
Content-Security-Policy: script-src 'self' https://trusted-cdn.com; object-src 'none'
-
<meta>仅支持极少数 CSP 指令,如base-uri、img-src(部分浏览器)、default-src(效果受限) -
script-src、connect-src、frame-src等涉及执行或跨域加载的指令,在<meta>中被静默丢弃,DevTools 不报错也不提示 - 验证是否生效:打开 DevTools → Security 标签页,或 Network → 查看 HTML 响应头是否存在
Content-Security-Policy字段
真正要防资源被滥用,前端能做的只是减少自身泄露信息;硬性拦截必须落在服务端策略和 CDN 配置上。别指望一行 meta 解决所有防盗链问题,尤其当目标服务器主动拒绝空 Referer 时,那行代码反而成了错误源头。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











