【问题标题】:IPV6 issues with ajax requestsajax 请求的 IPV6 问题
【发布时间】:2016-11-15 14:05:41
【问题描述】:

我有一个提交给 Apple 的应用程序存在问题,Apple 声称这是由于该应用程序在仅 ipv6 的网络上运行时出现故障。

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

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

下一个问题是我是否可以在客户端做些什么来强制在 ipv4 上进行通信,即使客户端网络在 ipv6 上运行。这是我的代码,很简单:

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

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

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

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

【问题讨论】:

  • Apple 说的究竟是什么问题?
  • 他们只说应用程序在 ipv6 网络上运行时失败了,从他们发送的屏幕截图来看,似乎是 ajax 请求失败了。所以很遗憾,我们没有更具体的信息。

标签: javascript ajax xmlhttprequest ipv6


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2011-12-24
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多