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