1

我编写了下面的 Ajax 文件,它将请求 authanticate.xml 文件进行身份验证。

  var file_path = "var file_path = "C:/Users/sankett/Desktop/authanticate.xml";   
  if(xmlhttp.readyState==4 && xmlhttp.status==200)
   {

    xmlDoc=xmlhttp.responseXML;
    x=xmlDoc.getElementsByTagName("person");

    for (i=0;i<x.length;i++)
      {
      if(document.getElementById("pswd").value == x[i].childNodes[1].nodeValue){
      document.getElementById("myDiv").innerHTML="AUTHENTICATED";
      }
      else{
      document.getElementById("myDiv").innerHTML="ACCESS DENIED";
       }
      }
    }
  }

xmlhttp.open("GET",file_path,true);
xmlhttp.send();

但浏览器显示 XMLHttpRequest 无法加载 file:///C:/Users/sankett/Desktop/authanticate.xml。我错过了什么吗Cross origin are only supported for HTTPDOMException.NETWORK_ERR 19

下面是我的 XML 文件:

<?xml version="1.0"?>
<authenticate>
   <person category="Admin">
      <username>Sanket</username>
      <password>laurentiis</password>
   </person>
</authenticate>
4

1 回答 1

0

根据您使用的浏览器,这可能是预期的行为。给定本地文件路径,几乎所有浏览器都会尝试通过file://协议打开文件。我知道 WebKit 将该file://协议视为不安全的(即,无论文件实际在哪里,您都不能向该协议发出 AJAX 请求)。我上次检查时 Gecko 允许您访问子目录,但我不确定 IE

最好的解决方案是通过访问文件http://localhost,因为 HTTP 协议的行为更加可靠。无论是在您的 JS 代码中还是在您在浏览器中打开页面时。

于 2013-08-06T12:20:22.427 回答