我有一个简单的JavaScript函数可以打开XML文件。文件URL只是现在显示的网站之一,通过
在Firefox扩展的JavaScript文件中获得var url =content.document.location.href;
这很好,接下来,
xml=loadXMLDoc(url);
应该给我这个文件,它在互联网上的网站上运行得很好。但是,我现在设置了一个本地机器,而不是http:publicwebsite.com/file.rdf我现在有http://localhost/file.rdf
,突然JavaScript函数loadXMLDoc不会产生任何结果。
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
try
{
xhttp.open("GET",dname,false); // open server interface
}
catch (err)
{ // if error occurs
alert("XMLHttpRequest.open() failed.\n"+ err);
}
xhttp.open("GET",dname,false);
xhttp.send("");
alert(xhttp.responseXML);
return xhttp.responseXML;
}
警报(xhttp.responseXML);返回null。
这是原始政策相同的问题还是我错过了什么?
答案 0 :(得分:0)
您正在撰写扩展程序 - 没有同源政策,您可以阅读任何您喜欢的内容。我宁愿怀疑本地服务器返回的MIME类型不正确,它需要是一个XML MIME类型才能正确处理XMLHttpRequest(在这种情况下可能是application/rdf+xml
)。如果您使用Apache,则服务器配置中的以下指令应该:
AddType application/rdf+xml .rdf
如果你无法影响服务器,但你确定你得到的是XML文件,你也可以使用overrideMimeType:
xhttp.overrideMimeType("application/rdf+xml");