在 chrome 扩展清单 v3 中添加不安全内联

问题描述 投票:0回答:3

我正在构建一个 chrome 扩展并面临与 csp 相关的问题。 我正在使用清单 V3

下面是我的csp

 "content_security_policy": { 
      "extension_pages": "script-src 'self' 'unsafe-inline' 'https://cdn.jsdelivr.net/'; object-src 'self'"
    }

我在代码中使用 alpine.js 并想运行它。 它在 v2 中运行,但我无法让它在清单 v3 中工作。

谢谢

google-chrome-extension manifest content-security-policy
3个回答
5
投票

请参阅迁移到 Manifest V3 (mv3)。

来自外部域的脚本在mv3中不允许,所有脚本必须包含在扩展包中。

"extension_pages"
:- 此策略涵盖您的扩展中的页面,包括 HTML 文件和 Service Worker。这些页面类型由
chrome-extension://
协议提供。例如,您的扩展程序中的页面是
chrome-extension://<extension-id>/foo.html

因此

https://cdn.jsdelivr.net/
是mv3中CSP的错误来源。顺便说一句,像
'https://cdn.jsdelivr.net/'
这样的主机源不应在 CSP 中用单引号引用

我无法让它在清单 v3 中工作”不是问题的技术描述。如果出现问题,控制台中应该会出现诊断消息。


1
投票

正如 @granty 所写,Manifest v3 中不允许使用外部脚本。

即使 Alpine.js 作为本地 js 文件包含在内,它似乎也使用了 eval(),这也是清单 v3 所禁止的。 仅允许在沙盒页面中使用(应在清单中明确列出),但此类页面有一些限制(例如禁用扩展 API)

    "sandbox": {
        "pages": ["awesome_alpine.html"]
    },

https://developer.chrome.com/docs/extensions/mv3/mv3-migration/#content-security-policy https://developer.chrome.com/docs/extensions/mv3/sandboxingEval/


0
投票

我遇到了类似的问题,并选择使用js解释器sval。你几乎可以做任何事情,但这有点违背了清单 v3 中定义的“安全”的目的!

© www.soinside.com 2019 - 2024. All rights reserved.