Firefox扩展MV2中background.js运行Worker的CSP问题解决方法
Firefox MV2 后台脚本中正确运行Worker的方案
一、修正CSP配置
Firefox MV2对后台脚本的CSP有严格限制,正确的配置需要明确允许从扩展自身源加载Worker和Wasm相关资源:
"content_security_policy": "script-src 'self' blob:; worker-src 'self'; object-src 'none';"
script-src 'self' blob::允许加载扩展包内的脚本,同时支持Wasm加载可能用到的blob协议worker-src 'self':明确授权从扩展自身源创建Workerobject-src 'none':遵循安全最佳实践,禁用不必要的对象资源加载
二、正确创建Worker
后台脚本本身有权限直接访问扩展包内的资源,无需配置web_accessible_resources(该字段用于网页内容访问扩展资源),直接用相对路径初始化Worker即可:
const worker = new Worker('worker.js');
三、之前尝试方案的问题说明
data:协议Worker:Firefox MV2的CSP明确禁止在script-src中使用data:协议,因此该方式无法生效。- 错误配置
web_accessible_resources:该配置与后台脚本的资源访问无关,属于冗余操作。 - 错误添加
'unsafe-inline':后台脚本的CSP不需要'unsafe-inline',添加后会触发CSP规则冲突,导致资源加载被阻止。
内容的提问来源于stack exchange,提问作者jeffma
相关产品推荐
相关产品推荐

