繁体   English   中英

JSONP和Backbone.js

[英]JSONP and Backbone.js

我想将Backbone.js与我控制的REST api一起使用。 我希望将REST api和Backbone脚本存放在不同的域中,但不幸的是,这将被阻止,因为它是一个跨域请求。

Backbone.js是否具有支持JSONP请求的内置功能? 或者,有没有人有任何手动向Backbone.js sync系统添加JSONP支持的经验?

可以通过fetch的选项添加JSONP对GET操作的支持。

在配置successerror处理程序的相同哈希中,添加如下对象:

{dataType: "jsonp"}

这会将jsonp选项传递给JQuery的ajax处理程序,并且自动地,您将获得JSONP支持以检索模型/集合。

您将无法将整个REST API与JSONP一起使用。 您只能使用JSONP调用GET请求(它通过在当前文档上编写新的<script>标记,然后调用javascript回调...来工作)。

要使用所有HTTP谓词(POST,DELETE,PUT),您可以使用CORS协议: http//www.w3.org/TR/access-control/

CORS是浏览器和Web服务之间协商的协议,它告诉浏览器从跨域调用执行Javascript代码是“OK”

要使用此功能,您只需在服务器响应中包含一些自定义标头,告知浏览器可以接受跨域请求。 这是一篇博客文章,解释了如何使用RubyOnRails实现它(但它应该与其他框架非常相似......): http ://www.tsheffler.com/blog/?p = 428

这是最简单的解决方案,您可以使用backbone.js,就好像您在同一个域中一样,并且它适用于大多数当前浏览器(Internet Explorer 8 +,Firefox 3.5 +,Safari 4+和Chrome)!

如果您需要较旧的浏览器支持,我确实设法使用easyXDM进行骨干工作:

easyXDM是一个Javascript库,使您作为开发人员可以轻松解决相同原始策略所设置的限制集,从而可以轻松地跨域边界进行通信和公开JavaScript API。

它有点复杂,并且与一些众所周知的iframe黑客(有时用于像GMaps,facebook小部件等的javascript小部件中)一起使用。

希望这有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM