无法通过Chrome扩展程序跨站点ajax api调用?

我正在尝试创建一个名为chrome应用程序api的chrome扩展程序。 目前api返回json并且工作正常,但是当我尝试将其构建为chrome扩展时,它说:

由于Content-Security-Policy,拒绝从’http://mysite.com/demo?q=hello?callback=jQuery16409466155741829425_1342489669670&_=1342489677171’加载脚本。

我查看了文档http://code.google.com/chrome/extensions/contentSecurityPolicy.html ,除非我将我的网站实施为https版本,否则我听不到这样做。 (在“放宽默认政策”部分下)我不确定我是否理解正确,仅仅因为这个而做出如此大的改变是荒谬的。 我被误解了吗? 或者有解决方法吗? 谢谢。

在Chrome扩展程序中, 只要您在清单文件中定义来源,就允许跨站点XMLHttpRequests – 请参阅http://code.google.com/chrome/extensions/xhr.html 。

JSONP实现使用标记加载外部脚本,并将其插入到文档中。 除非通过"content_security_policy"条目将源列入白名单,否则当清单版本 2处于活动状态时,不能使用JSONP(不要使用清单v1来克服此问题,因为它已被弃用,并且已存在合适的替代方案)。

当您无法接收JSON响应而不是JSONP时,请使用普通请求获取数据,切断回调,然后解析它。 例如:

 // response is the response from the server // Received through `XMLHttpRequest`, jQuery.ajax, or whatever you used // cuts of jQuery....( and the trailing ) response = response.replace(/^[^(]*\(/, '').replace(/\);?$/, ''); 

默认情况下,由于相同的源策略,浏览器不允许这样做。

但是你可以通过发出jsonp请求来解决这个问题。

当您使用jquery时,使用getJSON方法非常简单