У меня есть приложение, которое извлекает широту и долготу из api геолокации и выполняет обратное геокодирование для api отдыха. для тестирования различных локаций. Однако недавно результирующий вызов AJAX перестал работать, и я получаю ошибки CORS, хотя я знаю, что остальные api имеют правильные заголовки CORS. Фактически, когда я устанавливаю для местоположения значение «No Override», вызов работает как обычно.
Я установил скрипку здесь для демонстрации. URL-адрес, к которому он обращается, не имеет настройки CORS (я не смог найти publi c echo, который имел), но поведение можно увидеть.
Посмотрите вкладку сети. Когда выбрано «No Override», chrome пытается выполнить прямой запрос GET. Когда выбран «Лондон», Chrome отправляет запрос OPTIONS, этот запрос не выполняется, независимо от того, настроен ли остальной api для CORS или нет. Очевидно, что в скрипте все это не удается из-за api, но даже правильно настроенная конечная точка дает сбой с обычной ошибкой «заголовок не установлен».
Это ошибка или я чего-то упускаю?
$('button').on('click', function(e) {
navigator.geolocation.getCurrentPosition(function(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
$.get('https://postman-echo.com/get?q=' + lat + ';' + lng, function(res) {
console.log(res.body);
});
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>
Click
</button>