Chrome扩展程序拒绝加载Jquery脚本/进行JSON调用

时间:2015-08-05 05:52:55

标签: javascript jquery json google-chrome-extension content-security-policy

有点新手试图在这里创建我的第一个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");

      });

   });

});

1 个答案:

答案 0 :(得分:0)

根据谷歌的新CSP,您无法在Chrome扩展程序中加载外部(CDN)脚本文件。您需要打包所有资源,下载jquery并从您的包中访问。 “jquery.min.js”而不是CDN-URL / jquery.min.js。这是detail