Ошибка: "Доступ к ограниченному URI отклонен"
Доступ к ограниченному URI отклонен "code:" 1012 [Break On This Error]
xhttp.send(нуль);
function getXML(xml_file) {
if (window.XMLHttpRequest) {
var xhttp = new XMLHttpRequest(); // Cretes a instantce of XMLHttpRequest object
}
else {
var xhttp = new ActiveXObject("Microsoft.XMLHTTP"); // for IE 5/6
}
xhttp.open("GET",xml_file,false);
xhttp.send(null);
var xmlDoc = xhttp.responseXML;
return (xmlDoc);
}
Я пытаюсь получить данные из XML файла с помощью JavaScript. Я использую Firebug для тестирования и отладки в Firefox.
Вышеупомянутая ошибка - это то, что я получаю. Он работает в других местах, в которых я использовал то же самое раньше, почему здесь действует странно?
Может кто-нибудь помочь мне, почему это происходит?
Обновление:
http://jquery-howto.blogspot.com/2008/12/access-to-restricted-uri-denied-code.html
Я нашел эту ссылку, объясняющую причину проблемы. Но я не понял, что может дать решение, кто-то может разработать?
Ответы
Ответ 1
Другая возможная причина этого - когда вы работаете с файлом .html непосредственно в файловой системе. Например, если вы обращаетесь к нему с помощью этого URL-адреса в своем браузере: C:/Users/Someguy/Desktop/MyProject/index.html
Если тогда необходимо выполнить запрос ajax, запрос ajax будет терпеть неудачу, потому что запросы ajax к файловой системе ограничены. Чтобы исправить это, настройте веб-сервер, который указывает localhost на C:/Users/Someguy/Desktop/MyProject
и получите доступ к нему из http://localhost/index.html
Ответ 2
Похоже, вы нарушаете ту же политику происхождения.
Поддомены, разные порты, разные протоколы считаются разными доменами.
Ответ 3
Попробуйте добавить заголовок Access-Control-Allow-Origin:*
на серверную сторону script, который передает вам XML. Если вы не сделаете это на PHP (где вы можете использовать header()
) и попробуйте прочитать необработанный XML файл, вам, вероятно, придется установить заголовок в файле .htaccess, добавив Header set Access-Control-Allow-Origin "*"
. Кроме того, вам может понадобиться добавить Access-Control-Allow-Headers:*
.
Также я бы рекомендовал заменить * в режиме производства, чтобы запретить всем читать ваши данные и вместо этого добавлять свой собственный URL.
Ответ 4
Без кода невозможно сказать, но вы можете использовать фол для ограничения ajax для межсайтовых сайтов: вы не можете делать ajax-запросы для других доменов.