升级到HTTPS后,如何解决React Native网络请求失败?

时间:2020-01-29 11:02:44

标签: javascript ios reactjs react-native https

编辑:我的问题是我已经移走了我的存储库,并且在我的咖啡匮乏状态下,我的编辑器指向了错误的位置。实际编辑了正确的源之后,我的应用程序运行正常。

我一直在开发React Native应用,现在我的大部分功能都就位。后端是在Kotlin中使用PostgreSQL数据库之上的Spark微框架编写的REST API。该应用程序最初是用react-native init编写的,而世博会还没开始。尽管代码是纯React Native,但我一直在使用iOS来测试该应用程序,因此移植到Android并不是一个大问题。

当我的REST API服务器在localhost:1337上运行时,我的应用程序没有任何问题,但是昨天我部署到EC2实例,并使用通过letencrypt(使用Java密钥库)获得的证书来保护它。通过Web浏览器手动查询API可以很好地工作(并且证书有效),并且查询也可以在iOS Simulator中的Safari浏览器中运行,但是在模拟的React Native应用程序上,每个请求现在都失败了,因为我已经指出了它们我的新服务器。 GET请求失败,并带有警告承诺被拒绝:网络请求失败,而POST请求失败,并发生崩溃和相同的错误。请求以以下形式给出:

var url = "https://example.com/api/posts?lat=" +
    lat + "&lon=" + lon;
    this.setState({url: url});

    const bar = this;
    fetch(url) 
    .then(response => response.json())
    .then(data => {
      var foo = JSON.stringify(data);
      this.setState({ posts: foo});
    })
    .catch((err) => {
      console.log(err)
      reject(err)
    });

我已经完成了所有常规的React Native通用解决方案,例如擦除和重建ios / build目录,重新安装所有Node模块,甚至在info.plist中向我的域添加了一个例外(甚至通常允许不安全的请求) ,我认为在申请App Store批准时有点黑标),无济于事。当我回到家时,我打算探究与Wireshark的连接,但是由于请求立即失败而没有任何延迟,我希望它只会证实我的怀疑,即请求根本不会上升,并且由于某种原因被iOS拒绝了。 。我在调试工作中看到的大多数问题都涉及HTTPS工作和HTTP失败,这可以通过在iOS配置中设置变量来轻松解决。我还没有遇到过,在任何最新版本的React Native中都是相反的问题。

任何对此问题的建议将不胜感激,我真的是在这里扯头发。预先感谢。

0 个答案:

没有答案