在Chrome扩展程序中获取JSON

我的Chrome扩展程序有小问题。

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

那么,不使用清单1怎么办?

回答:

该CSP不能引起你所描述的问题。您很有可能使用的是JSONP而不是纯JSON。JSONP在Chrome中不起作用,因为JSONP通过<script>在文档中插入标签而起作用,该标签的src属性设置为Web服务的URL。CSP不允许这样做。

前提是您已在清单文件中设置了正确的权限(例如"permissions":

["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();

在将jQuery用于Ajax时,请确保不通过jsonp: false以下方式请求JSONP :

$.ajax({url:'...',

jsonp: false ... });

或者,当使用时$.getJSON

$.getJSON('URL which does NOT contain callback=?', ...);

以上是 在Chrome扩展程序中获取JSON 的全部内容, 来源链接: utcz.com/qa/399982.html

回到顶部