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

Ответ 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-запросы для других доменов.