Chrome 分机拒绝加载 Jquery 脚本/进行 JSON 调用
Chrome extension refusing to load Jquery script / make JSON call
有点新手尝试在这里创建我的第一个 Chrome 扩展。
我已经通过 运行 验证我的 JQuery 和 html 代码可以正常工作,方法是在浏览器中以调用 .JS 文件的普通 .html 文件打开它.
但是,具有相同代码的 Chrome 扩展无法 运行,似乎是由于 CSP 问题。 (我正在通过 https 调用 html 中的 ajax 库)
Refused to load the script
'http://www.reddit.com/r/abandonedporn/.json?jsonp=jQuery111307901595502626151_1438751974832&_=1438751974833'
because it violates the following Content Security Policy directive:
"script-src'self' https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js". send @ library.js:5
我修改了我的 manifest.json 文件,添加了我认为必要的所有最后内容,包括:
{"content_security_policy": "script-src 'self' https://ajax.googleapis.com/*; object-src 'self'"},
"permissions": [
"http://www.reddit.com/r/abandonedporn/.json?jsonp=?",
"http://www.reddit.com/*", "https://www.reddit.com/*",
"http://www.reddit.com/r/abandonedporn/",
"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js/",
"http://www.reddit.com/r/abandonedporn/.json?jsonp=jQuery111309090442832093686_1438671168851&_=1438671168852",
"http://*/*", "https://*/*",
"http://reddit.com/json*",
"http://www.reddit.com/r/abandonedporn/*"],
和
"content_scripts": [
{
"matches": [
"https://www.google.com/*",
"http://www.reddit.com/abandonedporn/*"
],
"js": [
"src/inject/inject.js",
"src/content.js",
"src/override/get_pics.js",
"src/override/get_pics2.js",
"src/override/library.js"
]
}
]
}
最后,我的实际 Jquery 脚本:
(请注意,将“.getJSON”更改为“.getScript”没有帮助。)
document.addEventListener('DOMContentLoaded', function () {
$.getJSON("http://www.reddit.com/r/abandonedporn/.json?jsonp=?", function(data) {
$.each(data.data.children, function(i,item){
$("<img/>").attr("src", item.data.url).appendTo("#images");
});
});
});
根据 google 的新 CSP,您无法在 chrome 扩展中加载外部 (CDN) 脚本文件。您需要打包所有资源,下载 jquery 并从您的包中访问。 "jquery.min.js" 而不是 CDN-URL/jquery.min.js。这里是 detail
有点新手尝试在这里创建我的第一个 Chrome 扩展。 我已经通过 运行 验证我的 JQuery 和 html 代码可以正常工作,方法是在浏览器中以调用 .JS 文件的普通 .html 文件打开它.
但是,具有相同代码的 Chrome 扩展无法 运行,似乎是由于 CSP 问题。 (我正在通过 https 调用 html 中的 ajax 库)
Refused to load the script
'http://www.reddit.com/r/abandonedporn/.json?jsonp=jQuery111307901595502626151_1438751974832&_=1438751974833'
because it violates the following Content Security Policy directive:
"script-src'self' https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js". send @ library.js:5
我修改了我的 manifest.json 文件,添加了我认为必要的所有最后内容,包括:
{"content_security_policy": "script-src 'self' https://ajax.googleapis.com/*; object-src 'self'"},
"permissions": [
"http://www.reddit.com/r/abandonedporn/.json?jsonp=?",
"http://www.reddit.com/*", "https://www.reddit.com/*",
"http://www.reddit.com/r/abandonedporn/",
"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js/",
"http://www.reddit.com/r/abandonedporn/.json?jsonp=jQuery111309090442832093686_1438671168851&_=1438671168852",
"http://*/*", "https://*/*",
"http://reddit.com/json*",
"http://www.reddit.com/r/abandonedporn/*"],
和
"content_scripts": [
{
"matches": [
"https://www.google.com/*",
"http://www.reddit.com/abandonedporn/*"
],
"js": [
"src/inject/inject.js",
"src/content.js",
"src/override/get_pics.js",
"src/override/get_pics2.js",
"src/override/library.js"
]
}
]
}
最后,我的实际 Jquery 脚本: (请注意,将“.getJSON”更改为“.getScript”没有帮助。)
document.addEventListener('DOMContentLoaded', function () {
$.getJSON("http://www.reddit.com/r/abandonedporn/.json?jsonp=?", function(data) {
$.each(data.data.children, function(i,item){
$("<img/>").attr("src", item.data.url).appendTo("#images");
});
});
});
根据 google 的新 CSP,您无法在 chrome 扩展中加载外部 (CDN) 脚本文件。您需要打包所有资源,下载 jquery 并从您的包中访问。 "jquery.min.js" 而不是 CDN-URL/jquery.min.js。这里是 detail