#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. Какой кошмар!