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 шт):

Автор решения: hwak

В Postman все работает и все заголовки приходят.

CORS ошибки возбуждаются в браузерах при интерпретации JS fetch api, XMLHttpRequest и др. Postman и любые другие клиенты такого ограничения могут не реализовывать по своему желанию.

Как уже выше написал @Sergey, ошибка связана с тем, что необходимые заголовки отправляются не в каждом ответе.

На бэкенде Вы можете создать что-то вроде postHandle обработчика, который в каждый ответ сервера будет дописывать необходимые заголовки или вручную добавлять их в каждом обработчике.

→ Ссылка