IPV6问题与ajax请求

时间:2016-11-15 14:05:41

标签: javascript ajax xmlhttprequest ipv6

我对提交给Apple的应用程序有疑问,并且Apple声称这是因为该应用程序在仅使用ipv6的网络上运行时失败。

从应用程序内部的javascript我使用XmlHttpRequest从第三方服务器获取数据,我认为问题可能是第三方服务器没有正确处理来自ipv6网络的请求。

Apple告诉我的是确保我正确地处理它,并且服务器支持ipv6请求。问题是我无法控制我们用于获取数据的第三方服务器。我尝试对服务器运行在线ipv6兼容性测试,这向我展示了可能是原因:第一个DNS服务器返回AAAA记录,而另一个不是。据我所知,这可能会导致客户端认为服务器支持ipv6,即使实际上并非如此。这似乎是请求失败的合理原因吗?

ipv6 test

接下来的问题是,即使客户端网络在ipv6上运行,我也可以在客户端执行某些操作,强制在ipv4上进行通信。这是我的代码,很简单:

var xhr = new XMLHttpRequest();
xhr.responseType = "document";

xhr.addEventListener("load", function() {
    callback(xhr.responseXML);
}, false);

xhr.open("GET", url, true);
xhr.send();

希望有人可以帮助我解释整个ipv6的头痛,因为网络不是我的专业领域。我只需要让这些请求正常工作,因此Apple可以接受该应用程序。

1 个答案:

答案 0 :(得分:2)

如果无法通过IPv6访问服务器,则不得(使用RFC 2119措辞)成为DNS中的AAAA记录。如果有,则来自具有IPv6的网络的请求将失败。由于Apple NAT64仿真的工作方式,这在使用他们的测试设置时可能并不明显,但它会在真正的NAT64网络上中断。

或反过来说:如果存在AAAA记录,那么它们必须包含有效地址,并且与该地址的连接必须有效。