配了integrity却没拦住篡改,大概率是crossorigin未配置或哈希非源自CDN实际响应体;必须同时设置integrity和crossorigin="anonymous"(公开CDN)或"use-credentials"(鉴权场景),且仅script和link[rel="stylesheet"]支持。

配了 integrity 却没拦住篡改,大概率是 crossorigin 没配对,或者哈希压根不是从 CDN 实际返回的内容算出来的——浏览器根本没校验,资源照常加载。
必须同时写 crossorigin="anonymous" 和 integrity
单独加 integrity 是无效的。浏览器只在校验跨域资源时才启用 SRI,而这个过程依赖 CORS 流程获取完整响应体。漏掉 crossorigin,integrity 就被静默忽略,控制台连 warning 都不报。
-
crossorigin="anonymous"是绝大多数公共 CDN(如 jsDelivr、cdn.jsdelivr.net)的正确取值;它不带 Cookie,兼容性好,且 CDN 通常返回Access-Control-Allow-Origin: * -
crossorigin="use-credentials"仅当你自己的后端要求带 Cookie 或认证头访问静态资源时才用,此时服务端必须返回Access-Control-Allow-Credentials: true和明确的Access-Control-Allow-Origin(不能是*) - 写成
crossorigin=""在 Chrome 中等价于anonymous,但 Firefox 解析更严格,建议统一写全crossorigin="anonymous"
哈希值必须从真实 CDN 响应体生成
本地文件、构建产物目录里的 JS/CSS、甚至你手动下载保存的副本,都可能和 CDN 实际返回的内容不一致:Gzip/Brotli 压缩、BOM、重定向、缓存策略导致的编码差异,都会让哈希失效。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
- 最可靠命令:
curl -sL https://cdn.example.com/script.js | openssl dgst -sha384 -binary | openssl base64 -A(-sL确保静默 + 跟随重定向,拿到浏览器最终加载的字节流) - 算法优先选
sha384:比sha256抗碰撞更强,主流 CDN 全支持;sha512在部分旧浏览器中不被识别 - 哈希值必须是 Base64 编码字符串,不是 hex;格式固定为
sha384-AbCdEf...,开头前缀不能少、不能错 - 别用在线工具生成——它们无法复现 CDN 的重定向链、压缩协商、BOM 处理等细节,出问题难排查
integrity 只对 <script></script> 和 生效
其他标签加了也白搭:、、、 全部被浏览器忽略。
-
是唯一支持 SRI 的link类型;rel="modulepreload"或as="style"写法都不行 - 哈希校验失败时,资源被直接丢弃——CSS 不解析、JS 不执行,页面可能白屏或样式错乱,控制台只报一条
The resource ... was blocked because integrity check failed - 这个错误不会触发
onerror回调,也无法通过window.onerror捕获,没法 fallback
真正容易被忽略的是:SRI 校验失败时,行为是静默拒绝,不是报错后继续执行。上线前务必手动删掉 integrity 值测试是否真能拦截篡改——否则你以为加了防护,其实形同虚设。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










