You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PWA用哈希收紧CSP后service-worker加载失败求助

问题分析与解决办法

首先纠正你的误解:worker-src 'self' 只负责允许加载Service Worker文件本身,而Service Worker内部通过importScripts引入的脚本,依然受script-src指令的约束,和worker-src无关。这就是主页面能正常加载,但SW里加载pack.js触发CSP报错的核心原因。

具体解决方案

  • 把pack.js对应的哈希值(也就是你主页面里integrity="sha256-hash1"中的sha256-hash1)添加到CSP的script-src指令中。这样SW通过importScripts加载pack.js时,哈希匹配就能通过CSP校验。
  • 若SW还需要执行其他内联脚本或引入其他外部脚本,同样要把对应内联代码的哈希值、外部脚本的哈希值加入script-src。

调整后的CSP头示例:

Content-Security-Policy: script-src 'sha256-hash1' [其他需要的哈希值]; worker-src 'self';

(注:如果主页面已无需'self'源,可直接移除,只保留必要的哈希值)

额外注意事项:

  • 确保pack.js的哈希值计算准确,前缀(如sha256-)、大小写、哈希字符串要和CSP配置完全一致。
  • 若使用CSP 3+版本,也可使用script-src-elem单独控制外部脚本加载,但多数场景下直接用script-src即可覆盖需求。

内容的提问来源于stack exchange,提问作者Vlad S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:12:06