【问题标题】:How to make API calls IPV6 compatible in react-native using the .fetch function?如何使用 .fetch 函数在 react-native 中使 API 调用 IPV6 兼容?
【发布时间】:2016-10-31 11:25:57
【问题描述】:

我开发了一个用 react native 编写的应用程序(用于 IOS),它在 IPV4 网络中运行良好。但是,最近 Apple 发送了一条消息,说我的应用程序在 IPV6 网络中测试时无法运行。他们告诉我,我还必须使其与仅限 IPV6 的网络兼容。

问题是,如何使我现有的 API 调用与 IPV6 网络兼容?

我的 API 使用 https 协议,它是通过域名调用的,而不是原始 IP。

我使用的示例 fetch 调用是:

fetch(query,{
      method: 'post',
      headers: Utils.fetchHeaders('post')
      })
      .then(Utils.checkStatus)
      .then(Utils.parseJSON)
      .then(json => this._handleResponse(json))
      .catch(error => {

         this.setState({
          votingError: 'Sorry, there was an error!',
          loading: false
       });

      });

API 端点采用以下格式:

https://www.myapidomain.com

任何帮助表示赞赏。

【问题讨论】:

    标签: ios react-native fetch ipv6


    【解决方案1】:

    fetch API 内部使用已经支持 IPv6 的NSURLSession

    大多数应用不需要任何更改,因为 NSURLSession 和 CFNetwork API 已经支持 IPv6。

    来源:https://developer.apple.com/news/?id=05042016a

    由于您没有在 fetch API 中使用 IPv4 地址,因此您应该可以继续使用。

    所以我怀疑还有其他东西(可能是一些第 3 方代码?)不与此合作。 Apple 是否向您提供了有关哪些问题不起作用的更多详细信息?

    我建议你关注this tutorial,在你这边测试一下,找出不正确的地方。

    【讨论】:

    • 看来我的端点是一个数字海洋水滴不接受来自 IPV6 网络的连接。虽然我的域分配有 IPV6 IP。液滴似乎存在网络问题。我正在与数字海洋交谈以解决这个问题。
    • 好的,我想我通过在我的服务器上启用 IPV6 支持来修复它,但是我不明白为什么我必须进行这样的修改。为什么我无法从仅限 IPV6 的网络中连接到 IPV4 服务器?有什么想法吗?
    • 我也怀疑 fetch API 内部使用了 NSURLSession。因为为什么它不应该默认工作呢?在 Apple 方面审查我的应用程序的人说,当他切换到 ipv4 网络时,该应用程序正在运行,但在仅 ipv6 的网络中无法运行。也许他们的网络没有将 IPV4 ips 转换为 IPV6 或者 fetch 实际上不使用 NSURLSession
    • RCTHTTPRequestHandler。如果您不放心,您可以自己在此处添加断点。
    • 好的,现在我想我明白发生了什么。一开始,我的域名被分配了一条指向我的服务器的 AAAA 记录。但是,服务器本身并未针对 IPV6 网络进行配置。我认为 Apple 的审阅者解决了 AAAA 记录并尝试连接到我的服务器,该服务器在我昨天设置之前无法处理 IPv6 请求。我认为如果我没有添加 AAAA 记录,Apple 连接到我的服务器不会有问题,因为从 IPv4 到 IPv6 的转换是必要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 2019-10-06
    • 2019-11-16
    • 2020-05-07
    相关资源
    最近更新 更多