将我的 Chrome 扩展迁移到 Manifest v3 时出错

Error with migrating my Chrome Extension to Manifest v3

我想将我的 Chrome 扩展迁移到清单 V3。
content_security 政策在清单 V2 上如下所示:

{...
"content_security_policy": "script-src 'self' 'sha256-...'; object-src 'self'"
}

请注意,我使用的是最具体的 sha-256 值 属性。
此外,我使用 this tool.

进行了“半官方”转换

当我将清单转换为 V3 然后更新扩展时,我得到以下 error。我不明白为什么它被认为是不安全的 CSP 值,而它在 Manifest V2 上被接受并且被认为可以安全地使用代码的指定哈希值。
我该如何克服它?

在manifest MV3中,CSP是一个对象,但在错误中是一个字符串,因此需要重新格式化。


示例和说明来自 migration guide:

清单 V2

"content_security_policy": "..."

清单 V3

"content_security_policy": {
  "extension_pages": "...",
  "sandbox": "..."
}
  • extension_pages:此政策涵盖您扩展程序中的页面,包括 html 文件和服务工作者。

    这些页面类型由 chrome-extension:// 协议提供。例如,您的扩展中的一个页面是 chrome-extension://<extension-id>/foo.html.

  • 沙盒:此政策涵盖您的扩展程序使用的任何 sandboxed extension pages

重要!

此外,MV3 不允许 extension_pages 的某些 CSP 修改,而这些修改在 MV2 中是允许的。 script-src、object-src 和 worker-src 指令只能有以下值:

  • 自己
  • none
  • 任何本地主机源,(http://localhost,http://127.0.0.1,或这些域上的任何端口)

沙箱的 CSP 修改没有此类新限制。


通过本指南,扩展页面似乎不允许使用 sha-256 值。但这些通常是内联脚本。您可以将脚本保存为 js 文件,然后使用 <script/> 标签从那里加载它;这不需要 CSP 策略。