成为赞助商——支持中文 Agent 生态

了解赞助
库Agent场景库
← 返回用例列表

子资源完整性哈希不匹配分诊

按 integrity 最强哈希选用、匹配失败网络错误与 crossorigin/CORS 要求,生成 CDN 脚本样式 SRI 失败分诊表;不代改线上标签。

场景说明

面向独立开发者与内容站点:把「CDN 脚本突然不执行」写成 SRI/CORS 对照清单,区别于混合内容或纯缓存刷新。

案例叙事

01他们做了什么

活动页引用了公共 CDN,供应方热更新同一 URL 的 JS——本地 integrity 还是旧哈希,浏览器直接当网络错误丢掉脚本,页面「像被挖空」。

MDN《Subresource Integrity》说明:站点常把部分资源放在第三方 CDN;SRI 通过 integrity 属性让浏览器在执行脚本或应用样式前核对内容哈希。属性可含多个 sha384/sha512 等摘要;浏览器处理时,先在 integrity 给出的哈希中选取由最强哈希函数生成的那一组(由弱到强:SHA-256、SHA-384、SHA-512),例如同时有 SHA-256 与 SHA-384 则只用 SHA-384 并忽略更弱者;再按该函数计算资源内容哈希,与列出值比较——若匹配所列哈希之一(文档示例为匹配任一 SHA-512)则加载执行,否则返回网络错误。因带 integrity 的请求须走 CORS,标记中必须含 crossorigin(例如 anonymous):默认从文档 HTML 加载资源是 no-cors,无法完成完整性校验所需。本场景据此输出哈希不匹配与 CORS 分诊表。禁止声称「CDN 已回滚」。

02实际效果

  • 源未披露量化「SRI 失败导致的转化跌幅」;公开文只描述算法选用、匹配失败与 CORS/crossorigin。
  • 发版清单可强制「改 CDN 文件必更 integrity」。
  • 能区分「哈希过期」与「缺 crossorigin/CORS 头」。

03值得知道

  • 仅部分元素/资源类型支持 SRI;以当前 MDN 与浏览器实现为准。
  • 多哈希列表时弱算法会被忽略,勿假设「写了 sha256 就一定参与判定」。
  • 上面写的是文档机制说明,不是你的 CDN 文件实时哈希。

04可复制提示词

SRI 失败分诊表

你是前端 SRI 分诊助手。只根据标签与错误归类,不要编造已更新哈希。

标签原文:{{tag_html}}
控制台错误:{{console_error}}
CDN 是否刚变更:{{cdn_changed}}

输出 Markdown:
1. 最强哈希选用是否可能忽略了你以为在用的算法
2. 不匹配 vs 缺 crossorigin/CORS 的分流提问
3. 发版对齐清单(重新计算哈希、双写过渡、回滚)
4. 验证步骤
禁止代改生产 HTML;禁止索要服务器权限。

CDN 热更新导致脚本失效复盘

第三方 CDN 资源疑似变更导致 SRI 失败,请写复盘提纲。

现象:{{symptom}}
integrity 值:{{integrity}}
时间线:{{timeline}}

输出:
1. 根因分层
2. 证据(本地算哈希 vs 线上字节)
3. 临时缓解(自托管、钉版本 URL)
4. 防再发
不要伪造「供应方已确认」。

05一手来源

MDN Web Docs · Subresource Integrity ↗

文档更新

怎么做

  1. 粘贴 script/link 标签(含 integrity/crossorigin)、CDN 是否刚发版、控制台错误
  2. Agent 输出:哈希算法选用规则、不匹配→网络错误、缺 CORS/crossorigin 提问、发版对齐清单
  3. 人工更新哈希或回滚 CDN;Agent 不代改 HTML

实用提示

  • CDN 静默替换文件内容而页面 integrity 未更新,浏览器会直接拒绝执行
  • 与 browser-mixed-content-https-triage 不同:本条是 SRI 哈希/CORS,不是 http 资源混入 https 页
#SRI#integrity#CDN#CORS#前端安全