Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascripts XMLHttpRequest在localhost上为Firefox扩展打开文件_Javascript_Firefox Addon_Xmlhttprequest - Fatal编程技术网

使用javascripts XMLHttpRequest在localhost上为Firefox扩展打开文件

使用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

我有一个简单的JavaScript函数,可以打开XML文件。文件URL就是现在显示的网站的URL,通过以下方式在Firefox扩展的JavaScript文件中获得:

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");