Код состояния 303 вызывает проблемы с CORS, даже если заголовки установлены правильно - PullRequest
0 голосов
/ 03 июля 2019

Я пытался найти решение в 100 различных похожих вопросах, но любой из них похож на этот, и предложенные решения мне не помогли.

У меня API, размещенный в том же источникестраница.Этот API возвращает код состояния 303 с заголовком Location , URL-адрес Location находится вне домена сайта.

Например,моя страница выглядит следующим образом:

https://example.com

, для которого с методом POST требуется следующая конечная точка:

https://example.com/api/payment

возвращенный код состояния, отображаемый на вкладке сети инструментов разработчика, равен 303 , тогда как заголовки, присутствующие в ответе , следующие (выдержка):

Контроль доступа-Разрешить-заголовки: Тип содержимого, Контроль доступа-Разрешить-Заголовки, Авторизация, X-Запрошено-С

Контроль доступа-РазрешитьМетоды: POST, GET

контроль доступа-разрешение-происхождение: *

Расположение: https://payment -page.com /

По завершении этого запроса браузер автоматически пытается перенаправить страницу оплаты.Но в этот момент что-то идет не так и процесс завершается неудачей.

Прежде всего, в сети появляется запрос на URL страницы оплаты с методом OPTION .В тех же деталях запроса есть следующее предупреждение:

Отображаются предварительные заголовки

Я полагаю, что запрос никогда не завершится, и XHR немедленно завершится неудачно с кодом состояния 0.

Кроме того, я вижу в консоли следующую ошибку:

Доступ к XMLHttpRequest по адресу https://payment -page.com / (перенаправлен из 'https://example.com/api/payment') от источника 'https://example.com/' заблокировано политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: в запрошенном заголовке «Access-Control-Allow-Origin» нетресурс.

Проблема в том, что я не могу явно установить Access-Control-Allow-Origin , так как не мой код выполняет запрос, но он автоматически выполняетсябраузер.

Я прочитал официальные спецификации и прочитал советы по выполнению простого запроса CORS, но в этом случае я не устанавливаю явно какие-либо заголовки, если не для / api/пayment конечная точка, и, конечно, я не могу удалить свои заголовки из этой конечной точки, иначе это вызовет ошибку.

Что я могу сделать, чтобы избежать этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...