【发布时间】:2014-01-16 20:02:38
【问题描述】:
我有以下骨干模型。
var aModel = Backbone.Model.extend({
url: 'http://api.site1.com/list
});
modelObj = new aModel();
我的应用程序的域是product.site1.com,所以我的应用程序向服务器发出的所有请求都是跨域请求。
我对 API 的所有主干请求都需要公共标头,所以我编写了以下主干同步方法
var sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
options.beforeSend = function (xhr) {
xhr.setRequestHeader('key1', 'ABCD');
xhr.setRequestHeader('key2', 'EFGH');
};
sync(method, model, options);
};
当我执行下面的 fetch 方法时
modelObj.fetch();
我的应用程序向 api.site1.com/list 发出 OPTIONS 请求
该请求成功后,它会向api.site1.com/list发出GET请求
POST 也是如此。
当我表演时
modelObj.save({name: "abc"}) 在获取之前,我的应用程序向 api.site1.com/list 发送 OPTIONS 请求,成功后它执行 POST 请求。
而当我这样做是为了更新,即 PUT,
我希望主干将 id 附加到 url,例如 api.site1.com/list/1 并执行 OPTIONS 请求
但是当我检查我的开发工具时,OPTIONS 请求发送到api.site1.com/list。成功时,它会向api.site1.com/list 发出 PUT 请求,而不是 api.site1.com/list/1
为什么会发生这种情况以及如何处理这种情况?
【问题讨论】: