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

Chrome扩展Manifest V3配置CSP后savehut.xyz脚本仍被拦截问题

问题原因

  1. Manifest V3 CSP配置格式错误
    你当前使用的是Manifest V2的CSP配置格式,Manifest V3不再支持直接在content_security_policy下编写全局script-src规则,必须按执行上下文拆分配置。Chrome没有识别到你编写的自定义规则,因此沿用了默认的script-src 'self'限制,导致远程脚本被拦截。
  2. Manifest V3 远程代码执行限制
    即使配置格式正确,Manifest V3对扩展自身上下文(包括后台服务工作者、popup、options等扩展页面)强制禁止加载远程脚本,只有沙箱页面允许配置远程脚本域名的CSP规则。
    你提到的jsdelivr域名脚本可正常加载,大概率是该脚本是注入到普通网页上下文执行的,使用的是对应网页的CSP规则,不受扩展CSP限制。

解决方案

方案一:使用本地脚本(推荐,符合Manifest V3安全规范)

将https://savehut.xyz/files/file.js下载到你的扩展项目目录中,直接用本地相对路径引入:

<script src="/file.js"></script>

本地文件默认命中'self'规则,不需要额外修改CSP即可正常加载。

方案二:使用沙箱加载远程脚本

如果必须使用远程脚本,需要通过沙箱页面托管外部脚本,再通过跨上下文通信完成逻辑交互:

  1. 修改manifest.json的CSP配置为Manifest V3兼容格式:
"content_security_policy": {
  "extension_pages": "script-src 'self' 'unsafe-eval'; object-src 'none';",
  "sandbox": "sandbox allow-scripts; script-src 'self' 'unsafe-eval' https://cdn.jsdelivr.net/* https://savehut.xyz/* 'unsafe-inline'; object-src 'none';"
},
"sandbox": {
  "pages": [
    "/sandbox.html"
  ]
}
  1. 新建沙箱页面sandbox.html,在该页面中引入你的远程脚本:
<script src="https://savehut.xyz/files/file.js"></script>
  1. 扩展的其他页面/后台逻辑通过postMessage与沙箱页面通信,调用远程脚本提供的能力。

操作校验

修改manifest.json后必须进入Chrome扩展管理页面(chrome://extensions/),点击对应扩展的刷新按钮,新配置才会生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:36:00