Ошибка: "Доступ к ограниченному 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
Я нашел эту ссылку, объясняющую причину проблемы. Но я не понял, что означает данное решение, может кто-нибудь разработать?
4 ответа
Другая возможная причина этого - когда вы работаете с файлом.html непосредственно в файловой системе. Например, если вы обращаетесь к нему с помощью этого URL в вашем браузере: C:/Users/Someguy/Desktop/MyProject/index.html
Если затем необходимо выполнить ajax-запрос, ajax-запрос завершится ошибкой, поскольку ajax-запросы к файловой системе ограничены. Чтобы это исправить, настройте веб-сервер, который указывает localhost на C:/Users/Someguy/Desktop/MyProject
и получить доступ к нему из http://localhost/index.html
Похоже, вы нарушаете ту же политику происхождения.
Поддомены, разные порты, разные протоколы считаются разными доменами.
Попробуйте добавить Access-Control-Allow-Origin:*
заголовок сценария на стороне сервера, который передает вам XML. Если вы не делаете это в PHP (где вы можете использовать header()
) и попробуйте прочитать необработанный файл XML, вам, вероятно, придется установить заголовок в файле.htaccess, добавив Header set Access-Control-Allow-Origin "*"
, Кроме того, вам может понадобиться добавить Access-Control-Allow-Headers:*
,
Также я бы порекомендовал заменить * в рабочем режиме, чтобы запретить всем читать ваши данные, и вместо этого добавить свой собственный URL.
Без кода невозможно сказать, но вы могли бы нарушить межсайтовое ограничение ajax: вы не можете делать ajax-запросы к другим доменам.