我在端口80上使用XAMPP Apache。
当我在localhost
中尝试使用url
时,我得到了:
XMLHttpRequest无法加载http://localhost/ice_escape/pokus.xml。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点'null'访问。
还有:
未捕获的TypeError:无法读取null的属性“0”
我尝试通过将此添加到httpd.conf来允许CORS无效:
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
然后我尝试将localhost
更改为127.0.0.1
。它删除了第一个错误,但另一个错误仍然存在。
var url = "http://127.0.0.1/iceescape/pokus.xml";
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
if (xmlhttp) {
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
txt = xmlhttp.responseText;
{//---- some code that parses the xml
var strWidth = "width";
var a = txt.indexOf(strWidth);
a += strWidth.length;
txt = txt.slice(a,(txt.length) );
var width = txt.match(/\d+/)[0];// here it says its null
}
}
}
};
xmlhttp.send();
xml:
<?xml version="1.0" encoding="UTF-8"?>
<map width = "2400" height = "1800">
<ghost type="troll" speed="5">
<point>
{100,200}
</point>
<point>
{350,250}
</point>
</ghost>
答案 0 :(得分:1)
您尝试使用XHR阅读的内容不是本地文件。
您有来源null
(这意味着您的 HTML文档是本地文件,通过file://
网址方案加载)并且您是将 Ajax结果发送到http://localhost/ice_escape/pokus.xml
,这是同一台计算机上的 HTTP资源。
也从Web服务器加载HTML文档。