Я звоню на внутреннюю конечную точку, которая отвечает кодом состояния 303
и URL-адресом в Location
.
Значение Location
является внешним веб-сайтом, который мы не можем контролировать, и перенаправление завершается ошибкой, поскольку браузер блокирует запрос по причинам политики CORS.
После некоторого анализа и исследований я понял, что проблема вызвана заголовками, которые мы отправили на внутреннюю конечную точку.
Что происходит, это:
Пользователь нажимает кнопку
Выполнен запрос к https://my-website.com/redirect-me
В приведенном выше запросе мы устанавливаем заголовок my-custom-authentication-header
, который представляет собой настраиваемый заголовок, который клиент использует для аутентификации всех служб
Приведенные выше запросы возвращают код состояния 303
и заголовок Location
, содержащий https://external-webiste.com/
Браузер выполняет запрос к https://external-webiste.com
с методом OPTION
и следующими заголовками (отрывок):
Метод контроля доступа-запроса: GET
Контроль доступа-Запрос-Происхождение: my-website.com
Заголовки-Access-Control-Request-my-custom-authentication-header
- Сервер внешнего сайта отвечает следующим заголовком (выдержка):
Access-Control-Allow-Headers: нет
- Браузер отказывается выполнять запрос
GET
, так как запрос предпечатной проверки не прошел
В соответствии с спецификациями применяются правила предварительного запроса:
Для метода запроса либо есть совпадение с кэшем метода, либо это простой метод, а флаг принудительной предварительной проверки не установлен.
Для каждого заголовка заголовка запроса автора есть либо совпадение кэша заголовка для имени поля, либо это простой заголовок .
Мы находимся в последнем случае, поскольку my-custom-authentication-header
не является простым заголовком , но мы не можем удалить его из внутреннего запроса, и я не знаю, каким образом можно удалить его из перенаправление запрос.
Как я могу это решить?
Спасибо