使用javascripts XMLHttpRequest在localhost上为Firefox扩展打开文件
我有一个简单的JavaScript函数,可以打开XML文件。文件URL就是现在显示的网站的URL,通过以下方式在Firefox扩展的JavaScript文件中获得:使用javascripts XMLHttpRequest在localhost上为Firefox扩展打开文件,javascript,firefox-addon,xmlhttprequest,Javascript,Firefox Addon,Xmlhttprequest,我有一个简单的JavaScript函数,可以打开XML文件。文件URL就是现在显示的网站的URL,通过以下方式在Firefox扩展的JavaScript文件中获得: var url =content.document.location.href; 这很好,下一步 xml=loadXMLDoc(url); 应该给我这个文件,它在互联网上的网站上运行良好。但是,我现在设置了一台本地计算机,现在我使用的不是http:publicwebsite.com/file.rdfhttp://localhos
var url =content.document.location.href;
这很好,下一步
xml=loadXMLDoc(url);
应该给我这个文件,它在互联网上的网站上运行良好。但是,我现在设置了一台本地计算机,现在我使用的不是http:publicwebsite.com/file.rdfhttp://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;
}
alertxhttp.responseXML;返回null
这是同源策略的问题还是我遗漏了什么?您正在编写扩展-没有同源策略,您可以随意阅读。我怀疑本地服务器返回的MIME类型不正确,它需要是XML MIME类型才能由XMLHttpRequest正确处理,在本例中可能是application/rdf+XML。如果您使用的是Apache,则服务器配置中的以下指令应起作用:
AddType application/rdf+xml .rdf
如果您无法影响服务器,但您确定返回的是XML文件,那么您也可以使用:
你到底为什么有xhttp=newActivexObjectMicrosoft.XMLHTTP;在Firefox扩展中@昆汀:是的……那有点没用。代码示例是跨浏览器的,我应该清理一下。更改服务器配置不是我的选择,因为firefox扩展应该能够处理它在web上找到的所有文件,而不依赖于它们所在的服务器。到目前为止,它还可以工作,只是在本地主机上不能。@Lukas Ruge:换句话说,你想让它在配置不正确的服务器上工作?我编辑了我的答案,尽管我觉得这个解决方案很有问题。感谢添加mime类型覆盖,我做到了这一点。。。很好的建议。我希望服务器能够正确配置,但最终还是要由配置人员决定,我希望扩展能够更灵活
xhttp.overrideMimeType("application/rdf+xml");