Safari на IOS игнорирует CORS / не отправляет запрос предварительных проверок CORS

У меня проблема с использованием Axios и VUEJS, когда я продолжаю получать сообщение об ошибке xmlhttprequest cannot load XXX due to access control checks только на Safari. Приложение работает найти на Chrome и Brave, но не Safari.

Кроме того, Safari, кажется, делает запрос CORS для ожидаемого URL, но затем отменяет его, не дожидаясь ответа.

Моя конечная точка написана на PHP

$origin = 'http://192.168.1.6:8080'; // For testing
$response = $response->withAddedHeader('Access-Control-Allow-Origin', $origin);
$response = $response->withAddedHeader('Access-Control-Allow-Headers', 'Authorization,Origin,X-Requested-With,Content-Type,Range');
$response = $response->withAddedHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');

1

Решение

Похоже, проблема связана с тем, что Safari не определил ранее данные CORS для веб-сайта. Вызов API в Axios был результатом ответа 302 (я не знаю, уместно ли это) и по какой-то причине ему это не понравилось.

Решение состояло в том, чтобы добавить запрос ping, который установил CORS (по крайней мере, это то, что я думаю, что он делает), когда приложение загружается впервые. Как это:

  this.$axios.get('api/ping').then(() => {
if (localStorage.getItem('id_token')) {
this.$router.push('/app/requests')
}
})

Этот пинг, который имеет только не прошедший проверку подлинности ответ с заголовками CORS, позволяет нормально выполнять последующие вызовы API.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]