Chrome扩展程序" Script-src"错误(自学)

时间:2015-07-20 22:14:12

标签: javascript json google-chrome-extension

我在学校学习C ++后自学JavaScript,我认为尝试构建Chrome扩展是一种好习惯。我正在尝试访问OpenWeatherMap的API以获取城市ID进行天气搜索。

以下是导致问题的代码部分:

var cityParam = $('#cityInput').val(); //ex. of cityParam = "New York"
        var cityURL = "http://api.openweathermap.org/data/2.5/find?callback=?&q="+ cityParam + "&type=like&sort=population&cnt=30";

        var cityJSON;

        $.getJSON(cityURL, function(data) {
            cityJSON = data;
}

我从Chrome收到的错误是:

Refused to load the script [url] ... because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:".

我进行了谷歌搜索,看起来Chrome扩展程序非常严格,你可以做什么,不能做什么(例如:不能内联javascript)。对网络开发不太熟悉,我不太清楚从哪里开始研究如何解决这个问题。

网址返回(我相信)一个JSON,但它以额外的?(,以结尾)开头。

感谢您的帮助!

修改
这是我拍摄的错误的屏幕截图。看来红色突出显示的文本来自jQuery。也许我传入的URL无法由$ .getJSON()处理? enter image description here

编辑2:
我按照 meda 的建议将以下内容添加到我的清单中,但错误仍然存​​在:

"permissions": [
    "http://api.openweathermap.org/*" 
 ]

2 个答案:

答案 0 :(得分:2)

URL包括osql -E -S ComputerName\InstanceName -Q "SELECT * FROM Northwind.dbo.Shippers" -o MyOutput.rpt这是JSONP的常见模式,支持它的API会将JSON包装在一个简单的JavaScript函数中。响应数据被传递给JS函数并避免浏览器XHR限制。只需从API网址中删除callback=?,您就可以了。

答案 1 :(得分:0)

不是JSON无效,它是出于安全目的限制Chrome应用。

您需要授予您的应用加载外部url

的权限

这是在清单文件

中完成的
"permissions": [
    "http://api.openweathermap.org/*" 
]