加了integrity属性不等于资源被校验——仅script和link[rel="stylesheet"]生效,且必须与crossorigin成对出现;漏写或写错crossorigin会导致校验被跳过,哈希比对根本不会触发。

加了 integrity 属性,不代表资源真被校验了——它只在 <script></script> 和 <link rel="stylesheet"> 上生效,且必须和 crossorigin 成对出现,否则浏览器直接跳过校验,连错误都不报。
为什么加了 integrity 却没拦截篡改的 JS?
最常见原因是漏写或写错 crossorigin。浏览器看到 integrity 后会强制走 CORS 请求流程,但若没声明 crossorigin,或 CDN 响应头缺失 Access-Control-Allow-Origin,浏览器拿不到完整响应体,哈希比对根本不会触发。
-
crossorigin="anonymous"是绝大多数公开 CDN(如 jsDelivr、cdn.jsdelivr.net)的正确取值 -
crossorigin="use-credentials"仅当你自己的后端要求带 Cookie 访问静态资源时才用,且后端必须返回Access-Control-Allow-Credentials: true和明确的Access-Control-Allow-Origin(不能是*) - 控制台不会提示“
crossorigin缺失”,只会安静地加载资源,integrity形同虚设
integrity 值怎么生成才不翻车?
哈希必须基于目标 URL 实际返回的响应体计算,不是你本地保存的文件,也不是 HTML 里写的路径内容。CDN 可能重定向、压缩、加 BOM、甚至返回不同编码的 UTF-8 —— 这些都会让本地算的哈希失效。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 推荐命令:
curl -sL https://cdn.example.com/lib.js | openssl dgst -sha384 -binary | openssl base64 -A(-sL确保跟随重定向并静默输出) - 算法优先选
sha384:比sha256抗碰撞更强,主流 CDN 默认支持 - 哈希值必须是 base64 编码后的字符串,不能是 hex 原始串(比如不能写
sha256-abc123,得是sha256-AbCdEf) - 在线工具(如 srihash.org)方便,但出问题时难排查细节(比如是否处理了重定向、BOM)
哪些标签支持 SRI?哪些写了也白写?
SRI 是 W3C 明确定义的机制,只作用于两类标签:<script></script> 和 <link rel="stylesheet">。其他所有加载方式都不受保护,写了 integrity 也没任何效果。
-
<img src="" integrity="">:浏览器完全忽略,不校验也不报错 -
<iframe src=""></iframe>或fetch()动态加载:SRI 规范未覆盖,无法启用 -
document.createElement('script')并手动设置src和integrity:浏览器不校验,只认 HTML 解析阶段的静态标签 - 内联脚本(
<script>console.log()</script>):integrity属性无效
校验失败时会发生什么?
浏览器发现哈希不匹配,会直接丢弃该资源,不执行、不解析、不触发 onerror,控制台只报模糊警告:Failed to find a valid digest in the 'integrity' attribute,且默认可能被过滤掉。
- 页面白屏、样式消失、
TypeError: xxx is not a function都可能是 SRI 失败的表象 - 检查网络面板中对应请求的响应头:确认有
Content-Encoding: gzip或br?SRI 校验基于解压后的原始字节,不是压缩流本身 - Firefox 对
crossorigin=""解析更严格,建议统一写成crossorigin="anonymous" - 多个哈希用空格分隔,浏览器从左到右校验,只采用第一个匹配项
真正容易被忽略的是:SRI 不校验资源内部行为。比如一个通过 SRI 加载的 main.js,它里面调用 import('./utils.js') 或 fetch('/api/config.json'),这些后续链路完全脱离保护范围。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










