我想使用backbone.js和jquery。该应用程序应该在手机上脱机运行(即“localhost”),在互联网上的某个服务器端后端几乎没有呼叫。
使用backbone.js实现跨域请求的最佳方法是什么?
我想使用JSON,但如果有必要,我最终可以切换回REST。
到目前为止,这是我不太令人印象深刻的代码:
App.Collections.Events = Backbone.Collection.extend({
model: Event,
url: 'http://mydomain.com/api/getevents/user_id/1/'
});
答案 0 :(得分:38)
允许跨域XMLHttpRequests有两种方法,这是Backbone.js用来从URL获取数据的方法。如果你已经控制了你想要连接的非原始域的服务器端,并且涉及实现Cross-Origin Resource Sharing(或CORS),那么第一个是合适的。
要实现CORS,请在Referer
请求标头(位于path
的开头;它应匹配正则表达式^.+?\/{2}[^\/]*
)中的'Origin'部分返回{ {1}}您要投放的域的响应标头:
Access-Control-Allow-Origin
您可能需要覆盖Backbone.sync才能在XMLHttpRequest对象上设置right settings。
如果您无权访问跨源服务器,则第二个选项是通过您自己的服务器(原始服务器或启用CORS的服务器)代理请求。显然,拥有你想要调用的域名的人可能不喜欢你这样做,但这是设计 - 如果他们不想让你调用你的服务,他们只有一个IP地址可以阻止,而不是你的每一个客户的IP。