У меня есть API на localhost:80
, который я хочу запросить у localhost:3000
, используя fetch
. Сайт в порту 80 защищен с помощью htpasswd. При прямом доступе к URL я получаю результаты в формате json. Результат запроса 401 Unauthorized
. Таким образом, у нас есть две "проблемы", чтобы решить здесь. Было бы легко иметь только один из них.
Ну, мой подход был установить 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');
Заранее спасибо!