Ошибка: "Доступ к ограниченному 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-запросы к другим доменам.

Другие вопросы по тегам