Chrome扩展程序BackgroundScript路径

时间:2017-10-30 12:42:17

标签: google-chrome google-chrome-extension manifest.json

我正在尝试从我的 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

Manifest.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'"    
}

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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域以实现向后兼容。