Http-метод меняется с POST на OPTIONS при изменении Content-Type

Я использую библиотеку закрытия, чтобы сделать простой POST. Я думаю, что XhrIo должен работать, потому что с моего компьютера, когда я использую любой другой клиент для отдыха, например браузерное приложение Firefox RESTClient или Chrome Simple Rest Client, я могу сделать POST-запрос к серверу, а тип контента - application/json.

Но из моего заявления я не могу сделать сообщение. Я использую следующий код

xhr = new goog.net.XhrIo;
xhr.send('http://myhost:8181/customer/add','POST', goog.json.serialize(data));

Если я оставлю заголовки по умолчанию, я получу это

Encoding: UTF-8
Http-Method: POST
Content-Type: application/x-www-form-urlencoded;charset=UTF-8

Если я попытаюсь изменить заголовок, передав {'content-type':'application/json'} в качестве 4-го параметра заголовок меняется на

Http-метод: ВАРИАНТЫ
Тип содержимого:

Должен ли я быть в состоянии изменить заголовки соответствующим образом с библиотекой Closure так же, как RESTClient делает с XMLHttpRequest с использованием JQuery?

Как еще можно изменить заголовок, чтобы он выглядел так

Encoding: UTF-8
Http-Method: POST
Content-Type: application/json;charset=UTF-8

Цени любую помощь, Эдди

3 ответа

Решение

Когда вы добавляете заголовок к объекту XHR, большинство браузеров выполняет предварительный запрос, который является OPTIONS метод, который вы видите. К сожалению, нет способа обойти это, если вы добавляете пользовательские заголовки. POST будет отправлен после OPTIONS,

Эта статья объясняет OPTIONS запрос немного. Некоторое время назад я столкнулся с проблемами с предполетной подготовкой, если это поможет.

Если у вас есть конкретные проблемы с OPTIONS просьба отредактировать свой вопрос, чтобы включить их; в противном случае это ожидаемое поведение.

FWIW мой также не удалось обновить тип, когда я указал...

{'content-type':'application/json'}

Однако, если я исправлю дело

{'Content-Type':'application/json'}

... это сработало.

Пойди разберись.

Если вы прошли Content-Type на authorization запрос будет конвертировать POST метод для OPTIONS метод, поэтому пока мы используем ouath и передаем токен авторизации, время не требуется Content-Type,

Так что не проходи Content-Type на все authorization запросить это не изменит ваш метод POST в OPTIONS

Другие вопросы по тегам