访问受限制的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
我发现这个链接解释了问题的原因。但我没有得到解决方案给出的解决方案可以有人详细说明吗?
答案 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请求。