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

Mac版Chromium 131扩展无法加载自身本地脚本求助

问题原因及解决方法

原因

Chromium 130+版本对Content Script的CSP约束机制进行了收紧:

  • Content Script的执行环境会直接继承宿主页面的CSP规则,不再完全遵循扩展自身的content_security_policy配置
  • 若宿主页面的CSP未允许加载chrome-extension://协议的资源,动态通过<script>标签加载扩展内资源(如你用chrome.runtime.getURL获取的chunk脚本)会直接触发CSP拦截

此前Chromium 127版本未启用该严格约束,因此你的扩展可以正常运行。

正确解决方式

方式1:静态声明所有需要的脚本(推荐)

直接在manifest.json的content_scripts字段中,将所有依赖的脚本(包括chunk-5db8bef4.js)添加到js数组里:

"content_scripts": [
  {
    "matches": ["<你的页面匹配规则>"],
    "js": ["index.js-loader-b0f4707b.js", "assets/chunk-5db8bef4.js"]
  }
]

这种方式下,Chromium会自动按顺序加载所有脚本,完全绕过宿主页面的CSP限制,是最安全且兼容的方案。

方式2:使用扩展API动态加载(若必须动态加载)

放弃用<script>标签加载的方式,改用chrome.scripting.executeScript API来加载扩展内的chunk脚本:

// 在index.js-loader-b0f4707b.js中执行以下逻辑
chrome.scripting.executeScript({
  target: { tabId: chrome.devtools.inspectedWindow.tabId },
  files: ["assets/chunk-5db8bef4.js"]
}).then(() => {
  // 脚本加载完成后的业务逻辑
}).catch(err => {
  console.error("加载chunk脚本失败:", err);
});

注意:使用该API需要在manifest.json中声明scripting权限:

"permissions": ["scripting", "<你的其他必要权限>"]

关于content_security_policy配置的说明

你之前修改该配置无效,是因为这个字段仅作用于扩展自身的页面(如弹窗、后台脚本页、选项页),不会影响Content Script的执行环境,所以针对Content Script的CSP问题,调整这个配置没有效果。

内容的提问来源于stack exchange,提问作者Saša Marković

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 03:34:50