fetch отклоняет запрос с кодом ответа 200 при выполнении запроса cors с аутентификацией - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть API на localhost:80, который я хочу запросить у localhost:3000, используя fetch. Сайт в порту 80 защищен с помощью htpasswd. При прямом доступе к URL я получаю результаты в формате json. Результат запроса 401 Unauthorized. Таким образом, у нас есть две "проблемы", чтобы решить здесь. Было бы легко иметь только один из них.

  • CORS
  • Аутентификация

Ну, мой подход был установить mode: 'cors' и credentials: 'include' в RequestInit, а также при установке серверной стороны заголовка Access-Control-Allow-Origin на * (только для целей тестирования).

Этот запрос приводит к коду состояния 200, но отклоняется fetch с console.warn, который mode: 'cors' не работает вместе с Access-Control-Allow-Origin: *. Поэтому я подумал, что установка заголовка Access-Control-Allow-Origin на localhost:3000 или http://localhost:3000 может, наконец, решить проблему, но это не помогло.

Оказалось, что теперь у меня возникло несоответствие URL: Код состояния ответа был все еще 200, но он все еще был отклонен, потому что localhost:3000 не соответствовал запрашивающему URL, который, насколько я знаю, действительно соответствовал.

Итак, кто-нибудь из вас знаете что я пропустил и сделал не так?

клиент на порту 3000:

let result = await fetch('http://localhost/path/to/resource', {
    mode: 'cors',
    credentials: 'include',
});

сервер на порту 80:

header('Access-Control-Allow-Origin: http://localhost:3000');

Заранее спасибо!

...