错误:“访问受限制的URI被拒绝”

时间:2011-07-11 17:12:03

标签: javascript html xml firefox firebug

  

访问受限制的URI被拒绝“代码:”1012 [在此错误中断]

     

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

我正在尝试使用JavaScript从XML文件中获取数据。我正在使用Firebug在Firefox上进行测试和调试。

以上错误是我得到的。它在我以前使用过的其他地方有效,为什么这里表现得很奇怪?

有人可以帮助我为什么会这样吗?

更新

http://jquery-howto.blogspot.com/2008/12/access-to-restricted-uri-denied-code.html

我发现这个链接解释了问题的原因。但我没有得到解决方案给出的解决方案可以有人详细说明吗?

4 个答案:

答案 0 :(得分:21)

另一个可能的原因是您直接在文件系统上使用.html文件。例如,如果您在浏览器中使用此网址访问它:C:/Users/Someguy/Desktop/MyProject/index.html

如果那时必须发出ajax请求,则ajax请求将失败,因为对文件系统的ajax请求受到限制。要解决此问题,请设置一个将localhost指向C:/Users/Someguy/Desktop/MyProject并从http://localhost/index.html

访问它的网络服务器

答案 1 :(得分:13)

听起来好像打破了same origin policy

子域,不同端口,不同协议被视为不同的域。

答案 2 :(得分:3)

尝试将Access-Control-Allow-Origin:*标头添加到为您提供XML的服务器端脚本中。如果您不在PHP中(可以使用header())并尝试读取原始XML文件,则可能必须通过添加Header set Access-Control-Allow-Origin "*"在.htaccess文件中设置标头。此外,您可能需要添加Access-Control-Allow-Headers:*

另外我建议在生产模式中替换*以禁止所有人阅读您的数据,而是在那里添加您自己的网址。

答案 3 :(得分:1)

没有代码不可能说,但你可能会违反跨站点ajax限制:你不能向其他域发出ajax请求。