У меня следующая модель позвоночника.
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);
};
Когда я выполняю метод выборки, как показано ниже
modelObj.fetch();
Мое приложение делает запрос OPTIONS к api.site1.com/list
В случае успеха этого запроса он делает запрос GET к api.site1.com/list
То же самое относится и к POST.
Когда я выполняю modelObj.save({name: "abc"})
перед выборкой, мое приложение отправляет запрос OPTIONS на api.site1.com/list
, в случае успеха оно выполняет запрос POST.
Принимая во внимание, что когда я делаю это для обновления, т.е. PUT,
Я ожидаю, что магистраль добавит идентификатор к URL-адресу, например api.site1.com/list/1
, и выполнит запрос OPTIONS.
Но когда я проверяю свои инструменты разработки, запрос OPTIONS отправляется на api.site1.com/list
. В случае успеха он отправляет запрос PUT на api.site1.com/list
вместо api.site1.com/list/1
.
Почему это происходит и как поступить в этом случае?