CORS policy ошибка только по некоторым адресам
Есть API мной написанный где прописаны все заголовки CORS.
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Headers: *');
С сервера при попытке залогинится выдается известная всем CORS policy ошибка. Но при попытке регистрации такой ошибки нет. Пример AJAX кода с ошибкой:
var settings = {
"url": "http://diplomapi/login",
"method": "POST",
"timeout": 0,
"headers": {
"Content-Type": "application/json"
},
"data": JSON.stringify({"login_or_email":"logi!","password":"password123Z"}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
Без ошибки:
var settings = {
"url": "http://diplomapi/signup",
"method": "POST",
"timeout": 0,
"headers": {
"Content-Type": "application/json"
},
"data": JSON.stringify({"login_or_email":"logi!","password":"password123Z"}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
Все заголовки отправляются успешно. Если убрать весь код по маршруту login и сразу отправить ответ он отправится. В Postman все работает и все заголовки приходят.
Ответы (1 шт):
В Postman все работает и все заголовки приходят.
CORS ошибки возбуждаются в браузерах при интерпретации JS fetch api, XMLHttpRequest и др. Postman и любые другие клиенты такого ограничения могут не реализовывать по своему желанию.
Как уже выше написал @Sergey, ошибка связана с тем, что необходимые заголовки отправляются не в каждом ответе.
На бэкенде Вы можете создать что-то вроде postHandle обработчика, который в каждый ответ сервера будет дописывать необходимые заголовки или вручную добавлять их в каждом обработчике.