#javascript #jquery #cors #xmlhttprequest
#javascript #jquery #cors #xmlhttprequest
Вопрос:
Я использую этот метод jQuery на странице, чтобы проверить, существует ли изображение:
function imageExists(imageUrl) {
var http = new XMLHttpRequest();
http.open('HEAD', imageUrl, false);
http.send();
return http.status !== 404;
}
Если я загружаю страницу в браузере, она отлично работает, но если я перехожу на следующую страницу, а затем возвращаюсь на эту страницу, скрипт работает некорректно. В консоли браузера ошибка:
Доступ к XMLHttpRequest по адресу ‘https://server/image.jpg ‘from origin’http://client ‘ был заблокирован политикой CORS: заголовок ‘Access-Control-Allow-Origin’ отсутствует на запрошенном ресурсе.
Эта ошибка возникает только при возврате с другой страницы сайта на эту страницу в браузере Chrome. В браузерах Firefox и Edge ошибки нет
Спасибо!!!
Комментарии:
1. Эта ошибка должна быть в любом случае, CORS не зависит от того, перемещаетесь ли вы туда и обратно между вашими собственными страницами, а исключительно от того, разрешает ли удаленный хост такого рода запросы или нет.
2. Я знаю, и CORS включен на сервере с изображениями. Возможно, политика CORS установлена неправильно на удаленном сервере. Но почему это работает без ошибок на странице загрузки?
3. Тогда в ответе должны отображаться соответствующие заголовки на сетевой панели; не так ли?
Ответ №1:
Эта проблема была исправлена путем добавления заголовка запроса ‘Cache-Control’ со значением ‘no-cache’:
function imageExists(imageUrl) {
var http = new XMLHttpRequest();
http.open('HEAD', imageUrl, false);
http.setRequestHeader('Cache-Control', 'no-cache');
http.send();
return http.status !== 404;
}