首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSONP和Backbone.js

JSONP和Backbone.js
EN

Stack Overflow用户
提问于 2011-08-24 08:54:02
回答 2查看 13.1K关注 0票数 26

我想使用具有我控制的REST api的Backbone.js。我希望REST api和主干脚本位于不同的域上,但不幸的是,这将被阻止,因为这是一个跨域请求。

Backbone.js有没有内置的功能来支持JSONP请求?或者,有没有人有向Backbone.js sync system手动添加JSONP支持的经验?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-24 19:48:11

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

要使用all HTTP verb (POST、DELETE、PUT),可以使用CORS协议:http://www.w3.org/TR/access-control/

Javascript CORS是在浏览器和

服务之间协商的协议,它告诉浏览器可以从跨域调用中执行Javascript代码

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

这是最简单的解决方案,你可以像在同一个域中一样使用backbone.js,而且它可以与大多数当前的浏览器( it 8+,火狐3.5+,Safari 4+和Chrome)一起使用!

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

easyXDM是一个Javascript库,它使您作为开发人员能够轻松地解决由同源策略设置的限制,从而使跨域边界通信和公开javascript API变得更加容易。

它有点复杂,并且使用一些众所周知的iframe hack(有时会用在javascript widgets中,比如GMaps,facebook widgets,...)。

希望这对你有所帮助!

票数 20
EN

Stack Overflow用户

发布于 2012-04-03 23:22:42

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

在配置successerror处理程序的相同散列中,添加一个对象,如下所示:

{dataType: "jsonp"}

这将把jsonp选项传递给JQuery的ajax处理程序,自动地,您将拥有对检索模型/集合的JSONP支持。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7169270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档