(CORS) - проблема соединения между источниками общего доступа - PullRequest
0 голосов
/ 03 октября 2018

Я сейчас нахожусь в процессе создания расширения браузера для университетского проекта.Однако, когда я записывал расширение, я столкнулся с действительно странной проблемой.Чтобы полностью понять мою ситуацию, мне нужно будет описать ее в долгах от того, откуда возникла моя проблема.

Расширение, над которым я сейчас работаю, должно иметь функцию, которая проверяет, может ли браузер подключаться к Интернету или нет,Вот почему я решил создать очень простую функцию запроса AJAX и в зависимости от результата, возвращаемого этой функцией, определить, есть ли у пользователя подключение к Интернету.

Именно поэтому я создал эту очень простую функцию AJAX, котораяВы можете увидеть ниже этой линии.

$.ajax({
    url: "https://enable-cors.org/index.html",
        crossDomain: true,
    }).done(function() {
        console.log("The link is active");
    }).fail(function() {
        console.log("Please try again later.");
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Пока я понимаю, что он делает, он работает нормально.Например, если вы запустите функцию как есть, она успешно подключится к URL-адресу и обработает «.done (function ...»), если вы измените URL-адрес на «index273.index» файл, который не существуетбудет обрабатывать с «.fail (функция ...». Я был доволен результатом, пока я не решил еще больше проверить его и отключил мой кабель от компьютера. Затем, когда я запустил расширение, он вернул последний результат, когдау браузера была связь с Интернетом. Мое объяснение, почему функция делает это, заключается в том, что она кэширует результат URL-адреса и, если не может подключиться, выдает последнее кэшированное значение. Мой следующий шаг, чтобы попытаться решить эту проблему - добавить кеш:false «после» свойства crossDomain: true, но после этого при запуске расширения выдается следующая ошибка:

Блокировка перекрестного запроса: та же политика происхождения запрещает чтение удаленного ресурса в https://enable -cors.org / index? _ = 1538599523573 . (Причина: заголовок CORS 'Access-Control-Allow-Origв 'отсутствует).

Если кто-то может помочь мне решить эту проблему, я был бы чрезвычайно благодарен.Я хотел бы заранее извиниться за мой английский, но это не мой родной язык.

PS: я пытаюсь реализовать эту функцию во всплывающем меню, а не в категории "content_scripts".В настоящее время я тестирую это под Firefox v62.0.3 (последняя доступная версия, когда я пишу этот пост).

С уважением, Джордж

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

, если на удаленном сервере не разрешен источник (разрешенные cors), вы не сможете получить к нему доступ, потому что это проблема безопасности.

Но есть и другие вещи, которые вы можете сделать:

  1. Вы можете загрузить изображение и запустить событие, когда изображение загружено
  2. Вы можете получить доступ к удаленному JSON через ответ JSONP

, но вы не можете получить доступ к другим страницам, потому что (если сервер этого не позволяет) это проблема безопасности.

0 голосов
/ 03 октября 2018

Возможно, вместо вызова URL-адреса, чтобы проверить, доступно ли интернет-соединение, вы можете попробовать использовать объект Navigator: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection

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