我想知道是否有人能帮我解决这个问题,我在网上看过一些使用XDomainRequest的例子,但他们并不能很好地解释代码。我正在尝试加载一个XML文件,以便能够对其进行解析。我使用的代码如下所示。
var xdr = new XDomainRequest();
xdr.onerror =
function ()
{
alert('Error!');
};
xdr.ontimeout =
function ()
{
alert('Timeout!');
};
xdr.onprogress =
function ()
{
alert('Loading...');
};
xdr.onload =
function()
{
alert('File:' + xdr.responseText);
}
xdr.timeout = 10000;
xdr.open("GET","http://www.spectraltechnologies.co.uk/webbuilder2020/Instrument_Lamps_New.txt", false);
xdr.send();每次我尝试使用它时,它总是返回xdr.onerror和伴随的警告。它请求的文件最初是一个XML文件,并且是XML格式的,但我已经制作了一个.txt副本,因为我知道这是XDomainRequest唯一接受的东西。
我已经能够为Firefox和Chrome浏览器做一个解决方案,但是Internet Explorer给我带来了很多问题。我真的希望有人能帮上忙,提前谢谢。
发布于 2012-05-01 18:16:18
我通过坚持使用冗长且非常具体的XDomainRequest规范解决了这个问题。我的第一个问题是我正在访问的文件/站点的响应头是不正确的。
这个站点使用了一个".htaccess“文件,所以我可以通过添加下面的代码来修复这个问题:
<filesMatch "\Instrument_Lamps_New.txt$">
<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin "*"
</IfModule>
</filesMatch>这段代码检查正在访问的文件是否是我想要的指定标头的文件,然后将其添加到标头。
我的第二个问题是,使用XDomainRequest时,您只能访问与从中打开请求的文件具有相同协议的文件。即http只打开http,https只打开https。由于调试站点,我从我自己的文件系统打开页面,所以由于"file://...“≠"http://..."而发生错误。
因此,在确保我的响应头包括"Access-Control-Allow-Origin“头之后,我上传了页面,它工作得很好。
该站点包含有关XDomainRequest的更多信息:http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
https://stackoverflow.com/questions/10344452
复制相似问题