Я пытаюсь отправить некоторые HTTP-запросы из моего приложения angular.js на свой сервер, но мне нужно решить некоторые ошибки cors.HTTP-запрос от углового отправит методом OPTIONS вместо POST
запрос HTTP равен этот образец:
functions.test = function(foo, bar) {
return $http({
method: 'POST',
url: api_endpoint + 'test',
headers: {
'foo': 'value',
'content-type': 'application/json'
},
data: {
bar:'value'
}
});
};
первого конец попытки некоторых Корс ошибки. Поэтому я реализовать следующие строки в моем сценарии сервера PHP:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT');
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding, X-Auth-Token, content-type');
Первая ошибка теперь устранена.
Теперь консоль разработчика (на хроме) показать мне следующие ошибки:
angular.js: 12011 OPTIONS http://localhost:8000/test (анонимный функция)
423ef03a: 1 XMLHttpRequest не может загрузить http://localhost:8000/test. Ответ на предполетной имеет недействительные HTTP код статус 400
и сетевой запрос выглядит как я ожидал (состояние 400 также ожидается):
Я не могу себе представить, как решить (и как понять), почему запрос будет отправлять на localhost в качестве OPTIONS и на удаленные серверы в виде POST. Есть ли решение, как исправить эту странную вещь?
Попробуйте добавить 'Принять': 'application/json' в заголовке –
Это OPTIONS - это предпродажный запрос, отправленный браузером, потому что в вашем POST-вызове установлены пользовательские заголовки; это нормально. Я думаю, что проблема связана с содержанием этих заголовков. –
Проблема заключается в том, что ответ на запрос предпросмотра ('OPTIONS') не увенчался успехом, т. Е. HTTP 400. Вот почему сбой реального (последующего) запроса. Вы должны убедиться, что ответ на запрос предполетной проверки действителен. –