Как мне обойти блокировку запросов из разных источников?

#javascript #ajax

#javascript #ajax

Вопрос:

Я пытаюсь получить файл на сервере, на котором я запускаю свой php. Служба веб-хостинга.

Я сталкивался с этой проблемой раньше, пытаясь получить доступ к файлу из html либо локально, либо с сервера. Мой код:

 <! DOCTYPE html >

<html>
   <head>
       <title>retrieve_activities_json.html</title>
   </head>
   <body>
   
       <p id="demo"></p>
       
       <script>
       var xmlhttp = new XMLHttpRequest();
       xmlhttp.onreadystatechange = function() {
           if( this.readystate == 4 amp;amp; this.status == 200 ) {
               var activities_obj = JSON.parse(this.responseText);
               document.getElementById('demo').innerHTML = activities_obj[0];
           }
   
       };
   
       xmlhttp.open("GET","activities.json", true);
       xmlhttp.send();
       
       </script>
   </body>

</html>
 

Есть ли какие-либо настройки в моем браузере или на сервере веб-хостинга, которые помогут мне устранить это сообщение об ошибке:

Доступ к XMLHttpRequest по адресу ‘file:/// D:/Web Development Tutorials/JavaScript Practice/activities.json’ из источника ‘null’ заблокирован политикой CORS: запросы из разных источников поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, chrome-ненадежный, https.

Комментарии:

1. CORS настроен на сервере.

Ответ №1:

Просмотр Origin 'null' означает, что вы пытаетесь динамически загружать файлы со своего локального компьютера. Это не разрешено политикой того же происхождения (CORS), о которой вам сообщает Chrome. Chrome особенно строг в отношении этого правила.

Хотя есть способы обойти это, я бы действительно не рекомендовал это.

Лучше всего было бы настроить бесплатный локальный веб-сервер и запустить тестовый код оттуда.

Комментарии:

1. Я не знаю, имеет ли это значение для вашего ответа, но, как я уже говорил выше, файл, который я пытаюсь загрузить, находится на моем сервере веб-хостинга, это не файл, хранящийся локально на моем компьютере. Кажется, я уже заставлял это работать раньше, когда пробовал примеры AJAX. У меня есть AJAX-скрипт, который успешно выполняет это с сервера git. Я поиграю с этим и посмотрю, смогу ли я заставить его загрузить файл с сервера моего веб-хостинга.

2. Хм, тогда вам, вероятно, следует использовать полный путь в вашем ajax-запросе: xmlhttp.open("GET","https://localhost/activities.json", true);

3. О, теперь я понимаю, почему вы это говорите. Поскольку я не смог получить доступ к файлу со своего сервера веб-хостинга, приведенный выше код — это моя вторая попытка получить к нему доступ на моем локальном сервере. Извините за путаницу. Это была моя исходная строка кода: xmlhttp.open(«GET», » signup.travisknights.org/get_activities_json.php «, верно); Но это сработало не так хорошо. Я поиграл с несколькими учебными пособиями по AJAX, которые работали в прошлом, заменив путь к файлу выше. Во всех случаях один и тот же результат, одно и то же сообщение об ошибке.

4. Я вижу, просматривая множество ресурсов, касающихся политик COR, что, якобы в целях безопасности, AJAX больше невозможен, если только это не настроено владельцем сервера, который предлагает доступ к данным JSON. Какой кошмар!