Почему CORS не работает с POST?
-
23-09-2019 - |
Вопрос
Собственный Mozilla Спецификация говорит просто GET
или POST
изначально должен быть CORS без предполетной подготовки, но пока все POST
предпринятая мною попытка привела к OPTIONS
заголовок выходит.Когда я меняю его с POST
чтобы получить код, немедленно отправляет соответствующее GET
запросите, чтобы межсайтовая часть работала нормально.
Вот уменьшенный пример того, что я делаю в Firefox:
var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var invocation = new XMLHttpRequest();
if (invocation) {
invocation.open('POST', destinationUrl, true);
//tried with and without this line
//invocation.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
invocation.onreadystatechange = (function Handler() {
if (invocation.readyState == 4)
alert('Request made');
});
invocation.send(/* tried with and without data*/);
}
Вот что у меня уже было в Chrome и IE:
var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var destination = { url: destinationUrl, type: 'POST', success: AjaxSuccess, error: AjaxError,
dataType: 'text', contentType: 'application/x-www-form-urlencoded'
};
destination.data = { 'rows': rowList, 'token': token };
$jq.ajax(destination);
Решение 2
ну, я не знаю, какие типы контента на самом деле работают, но text/plain
делает во всех трех браузерах:
var destination = { url: destinationUrl, type: 'POST', success: AjaxSuccess, error: AjaxError,
contentType: 'text/plain'
};
var postData={ 'anArray': theArray, 'token': token };
destination.data=JSON.stringify(postData);
$jq.ajax(destination);
Однако до сих пор я не понял, что мешает запросу сделать что-либо, кроме запуска метода успеха, даже когда возвращается код 505.Добавление заголовка ответа Access-Control-Allow-Origin: *
решено, что браузер не хочет читать возвращаемые данные.
Другие советы
У меня такая же проблема
https://developer.mozilla.org/En/HTTP_Access_Control
говорит, что EncType должен быть текстом/простой, или вам нужно использовать FX4+ все заголовки доступа должны быть правильно установлены