1

我正在尝试从我的Chrome 扩展程序的 manifest.json 中的cdn 路径( ' https://cdn.xyz.com/scripts/background.js ' )加载后台脚本,但它向我抛出了错误 -无法加载后台脚本' https://cdn.xyz.com/scripts/background.js '。我已经在 manifest.json 文件的 content_security_policy 中添加了https://cdn.xyz.com

清单.json

{
    "name": "MyExtension",
    "manifest_version": 2,
    "background": {
        "scripts": [
            "https://cdn.xyz.com/scripts/background.js"
        ],
        "persistent": false
    },
    "permissions": [
       "http://*/*",
       "https://*/*",
    ],
    "content_security_policy": "script-src 'self' 'unsafe-eval' https://cdn.xyz.com; object-src 'self'"    
}
4

2 回答 2

2

您不能直接在清单中添加远程脚本。

调整 CSP 允许您动态加载脚本 - 通过在您的(本地)后台代码中创建一个<script>适当的节点。src

// Local background script
let script = document.createElement('script');
script.src = "https://cdn.xyz.com/scripts/background.js"; 
document.head.appendChild(script); // Executes in background document

请注意,这种代码加载(大部分逻辑托管在其他地方并独立更新,在特权上下文中执行)非常不受欢迎,并且被 Mozilla 完全禁止用于列出的 WebExtensions。

于 2017-10-30T13:36:42.877 回答
0

该 CDN 用于HTTP/1.1 301 Moved Permanently重定向到cdn.xyz,请尝试:

"content_security_policy": "script-src 'self' 'unsafe-eval' https://cdn.xyz https://cdn.xyz.com; object-src 'self'"`

如果可行,您还可以添加通配符域并保留旧cdn.xyz.com域以实现向后兼容性。

于 2017-10-30T12:50:20.767 回答