Javascript 在Chrome扩展中获取JSON

Javascript 在Chrome扩展中获取JSON,javascript,ajax,json,google-chrome-extension,content-security-policy,Javascript,Ajax,Json,Google Chrome Extension,Content Security Policy,我的chrome扩展有一个小问题 我只是想从另一台服务器获取一个JSON数组。但是清单2不允许我这么做。我尝试指定内容安全策略,但JSON数组存储在没有SSL证书的服务器上 那么,如果不使用清单1,我该怎么办?不会导致您描述的问题。很可能您使用的是JSONP而不是普通的JSON。JSONP在Chrome中不起作用,因为JSONP通过在文档中插入标记来工作,该标记的src属性设置为Web服务的URL 如果您在清单文件中设置了正确的权限(例如,“权限”):http://domain/getjson*

我的chrome扩展有一个小问题

我只是想从另一台服务器获取一个JSON数组。但是清单2不允许我这么做。我尝试指定
内容安全策略
,但JSON数组存储在没有SSL证书的服务器上

那么,如果不使用清单1,我该怎么办?

不会导致您描述的问题。很可能您使用的是JSONP而不是普通的JSON。JSONP在Chrome中不起作用,因为JSONP通过在文档中插入
标记来工作,该标记的
src
属性设置为Web服务的URL

如果您在清单文件中设置了正确的权限(例如,
“权限”):http://domain/getjson*“]
,您将始终能够获取并解析JSON:

var xhr = new XMLHttpRequest();
xhr.onload = function() {
    var json = xhr.responseText;                         // Response
    json = json.replace(/^[^(]*\(([\S\s]+)\);?$/, '$1'); // Turn JSONP in JSON
    json = JSON.parse(json);                             // Parse JSON
    // ... enjoy your parsed json...
};
// Example:
data = 'Example: appended to the query string..';
xhr.open('GET', 'http://domain/getjson?data=' + encodeURIComponent(data));
xhr.send();
使用jqueryforajax时,请确保使用
JSONP:false

$.ajax({url:'...',
        jsonp: false ... });
或者,在使用时:


阅读这篇文章,希望它能帮助你解决我不明白的问题。我在清单中有正确的权限。但问题是,没有内容安全策略设置,jQuery$.getJSON函数无法工作。但是内容安全策略只接受HTTPS页面。非常感谢,伙计!我不知道发生了什么,但它在没有回调的情况下工作=?就像c害处!过去它不起作用,但现在没事了:-)所以解决了!我在网上找到的第一个真正的工作示例是经过数小时的搜索和尝试。如果我使用:var json=this.response;我让它工作。与responseText有什么区别?
$.getJSON('URL which does NOT contain callback=?', ...);