Ошибка: «Доступ к ограниченному URI запрещен» - PullRequest
10 голосов
/ 11 июля 2011

Доступ к ограниченному URI запрещен "code:" 1012 [Прервать эту ошибку] ​​

xhttp.send (null);

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);
}

I'mпытаясь получить данные из файла XML, используя JavaScript.Я использую Firebug для тестирования и отладки в Firefox.

Я получаю вышеуказанную ошибку.Это работает в других местах, которые я использовал раньше, почему здесь странно себя вести?

Может ли кто-нибудь помочь мне, почему это происходит?

Обновление:

http://jquery -howto.blogspot.com / 2008/12 / доступ-к-ограниченному-uri-denied-code.html

Я нашел эту ссылку, объясняющую причину проблемы.Но я не понял, что означает данное решение, может кто-нибудь разработать?

Ответы [ 4 ]

21 голосов
/ 11 февраля 2015

Другая возможная причина этого - когда вы работаете с файлом .html непосредственно в файловой системе. Например, если вы обращаетесь к нему с помощью этого URL в вашем браузере: C:/Users/Someguy/Desktop/MyProject/index.html

Если после этого необходимо выполнить ajax-запрос, ajax-запрос завершится ошибкой, поскольку ajax-запросы к файловой системе ограничены. Чтобы это исправить, настройте веб-сервер, который указывает localhost на C:/Users/Someguy/Desktop/MyProject и получите доступ к нему с http://localhost/index.html

13 голосов
/ 11 июля 2011

Похоже, вы нарушаете политику с тем же происхождением .

Субдомены, разные порты, разные протоколы считаются разными доменами.

3 голосов
/ 12 июля 2011

Попробуйте добавить Access-Control-Allow-Origin:* заголовок к сценарию на стороне сервера, который передает вам XML.Если вы не делаете это в PHP (где вы можете использовать header()) и пытаетесь прочитать сырой XML-файл, вам, вероятно, придется установить заголовок в файле .htaccess, добавив Header set Access-Control-Allow-Origin "*".Кроме того, вам может потребоваться добавить Access-Control-Allow-Headers:*.

. Также я рекомендую заменить * в рабочем режиме, чтобы запретить всем читать ваши данные, и вместо этого добавить свой собственный URL.

1 голос
/ 11 июля 2011

Без кода невозможно сказать, но вы могли бы нарушить межсайтовое ограничение ajax: вы не можете делать ajax-запросы к другим доменам.

...