我想将Backbone.js与我控制的REST API结合使用。我希望REST API和Backbone脚本位于不同的域中,但不幸的是,这是一个跨域请求,因此将被阻止。
Backbone.js是否具有内置功能来支持JSONP请求?或者,或者,有人对将JSONP支持手动添加到Backbone.js sync系统有任何经验吗?
sync
您将无法将整个REST API与JSONP一起使用。您只能使用JSONP调用GET请求(通过<script>在当前文档上写入新标签,然后调用javascript回调…来工作)。
<script>
要使用所有HTTP动词(POST,DELETE,PUT),可以使用CORS协议:http : //www.w3.org/TR/access-control/。
CORS是浏览器和网络服务之间协商的协议,它告诉浏览器执行跨域调用的Java代码是“确定”
要使用此功能,您只需要在服务器响应中包括一些自定义标头即可,该标头告诉浏览器可以接受跨域请求。这是一篇博客文章,解释了如何使用RubyOnRails实现它(但它应该与其他框架非常相似…):http ://www.tsheffler.com/blog/?p=428
这是最简单的解决方案,您可以像在同一个域中一样使用lobb.js,它可以与大多数当前的浏览器(Internet Explorer 8 +,Firefox 3.5 +,Safari 4+和Chrome)一起使用!
如果您需要较旧的浏览器支持,则可以使用easyXDM来使骨干网正常工作:
easyXDM是一个Javascript库,使您作为开发人员可以轻松解决Same Origin Policy设置的限制,从而使跨域边界的JavaScript API的通信和公开变得容易。
它稍微复杂一点,并且可以与一些众所周知的iframe hack(有时在javascript控件(例如GMaps,facebook控件…)中使用)一起使用。
希望对您有所帮助!