“铬延伸”;脚本src";错误(自学习) 我在学校学习C++之后,是自学JavaScript,我认为尝试建立一个Chrome扩展是一个很好的实践。我正在尝试访问OpenWeatherMap的API,以获取城市ID来进行天气搜索

“铬延伸”;脚本src";错误(自学习) 我在学校学习C++之后,是自学JavaScript,我认为尝试建立一个Chrome扩展是一个很好的实践。我正在尝试访问OpenWeatherMap的API,以获取城市ID来进行天气搜索,javascript,json,google-chrome-extension,Javascript,Json,Google Chrome Extension,以下是导致问题的代码部分: 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 city

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

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)。由于不太熟悉web开发,我不太确定从哪里开始寻找如何解决这个问题的方法

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

谢谢你的帮助

编辑:
这是我所犯错误的截图。红色突出显示的文本似乎来自jQuery。可能$.getJSON()无法处理我传入的URL?

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

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

无效的不是JSON,而是出于安全目的对chrome应用程序的限制

您需要授予应用程序加载外部
url
的权限

这是在清单文件中完成的

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

URL包括
callback=?
这是一种常见模式,支持它的API将JSON封装在一个简单的JavaScript函数中。响应数据被传递给JS函数,并避免浏览器XHR限制。只需从API URL中删除
callback=?
,就可以了。

谢谢!在清单文件中添加URL后,我似乎仍然收到拒绝加载脚本错误。红色下划线的文本似乎在jQuery中。我已经更新了第一篇帖子,展示了我拍摄的截图。我也是。将此添加到
manifest.json
没有帮助。我可以确认,仅添加此项并不能解决从外部url加载js的问题。这与他的问题无关,因此不是有效的答案。@zigmandle否<代码>拒绝加载脚本是因为
回调=?
告诉服务器返回JavaScript而不是JSON。否。看到另一个答案和关闭的理由,因为你的重复似乎是第二个错误。他在问为什么它拒绝加载你。@ZigMandel如果你看这个被标记为dup的Q的答案,它说的和我的答案一样<代码>$.getJSON('URL不包含回调=?',…)grr无法投票给您,除非您进行编辑(说s.o.)添加空格或其他内容。这可能也有帮助:如果您的目标端点支持https,只需在
manifest.json
“内容安全策略”:“脚本src'self”https://example.com;对象src“self”