内容安全策略错误,没有任何内联JavaScript

时间:2012-08-19 02:33:25

标签: javascript google-chrome-extension content-security-policy

我在尝试加载Chrome扩展程序时遇到此错误:

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' https://ajax.googleapis.com".

以下是我的 manifest.json

的一部分
...

 "background": {
 "scripts": ["launcher.js"]
     },
"options_page": "options.html",
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'",
"permissions": [
"tabs", "notifications", "http://*/*", "https://*/*"

...

在我的整个javascript中,我只与https://ajax.googleapis.com进行了沟通,并确保使用检查视图网络标签。

我已经验证了我的所有javascript代码只在我的 .js 文件中。 (是的,我在必要时使用 addEventListener()

有什么建议吗?

更新:显示导致错误的代码(Rob询问) 这是我与任何服务器通信的唯一地方:

....
$.ajax({
        type: "get",
        url: "https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=" + storyCount + "&callback=?",
        data: {
                q: link,
                output: "json_xml"
             },
        async: false,
        dataType: "json",
        success: function (data) {
             if (data.responseStatus == 200) {
                //process JSON
              }
....

2 个答案:

答案 0 :(得分:2)

从清单版本1更改为2。 Chrome扩展程序不允许您使用内联JavaScript。您需要将所有javascript放在.JS文件中并将其包含在html页面中。

同时删除所有onclick,onchange,onsubmit到eventlistner事件。

谢谢

答案 1 :(得分:0)

此错误消息与您对其他服务器的请求无关 - 它与内联脚本有关。如果您没有任何内联脚本,那么很可能会出现这种情况,因为您正在通过eval()new Function()或类似方式动态创建代码。例如,如果jQuery没有找到JSON.parse()方法,jQuery将执行此操作来解析JSON(在Chrome中,此方法通常应该可用)。根据您在此处提供的信息,无法确定哪个代码导致错误。

无论如何,你绝对不应该在评论中正确地注明JSONP Rob W。 JSONP将在您的扩展的上下文中执行来自远程服务器的代码,这本身就是不安全的 - 理论上它只会调用回调,但实际上它也可以做恶意的事情。您应该使用JSON(正在下载和解析数据,不执行远程代码)并从内容安全策略中删除ajax.googleapis.com