无法通过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方法非常简单
- 是否有一个创建类似Twitter的追随者的gem,或者是一个微不足道的:has_many?
- Ruby on Rails实时搜索(过滤)
- Google Maps for Rails – 使用AJAX更新标记
- Rails InvalidCrossOriginRequest
- Google Maps For Rails – 仅在搜索结果发生变化时通过ajax更新标记
- Rails中的AJAX:在完成模型#update后显示模型#new form
- Rails Auth Token和Ajax
- 在rails中提供静态JSON目标文件
- Rails form_for with file_field and remote => true and format =>:js