将我的 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 策略。
我想将我的 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 策略。