У меня проблема с использованием 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');
Похоже, проблема связана с тем, что 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.
Других решений пока нет …