“铬延伸”;脚本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”