我在尝试加载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
}
....
答案 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
。