【问题标题】:Unable to make API calls using react-native无法使用 react-native 进行 API 调用
【发布时间】:2015-08-07 15:31:59
【问题描述】:

我有一个本地运行的虚拟机,它是使用 Vagrant 构建的。我可以直接从浏览器卷曲并转到 URL。出于某种原因,当我使用 fetch API 在我的 react-native 应用程序中进行相同的调用时,它一直给我 Network request failed 错误。

这是一个sn-p的代码:

fetchData() {

  this.setState({ isLoading: true });

  var baseURL = 'https://192.168.33.33/api/session';

  console.log('URL: >>> ' + baseURL);

  fetch(baseURL)
  .then((response) => response.json())
  .then((responseData) => {
    console.log(responseData);
  })
  .catch(error => {
    console.log(error);
  })
  .done();
}

那里的baseURL 日志返回正确的 URL,错误如下所示:

URL: >>> http://192.168.33.33/api/session
TypeError: Network request failed {stack: (...), message: "Network request failed"}
  message: "Network request failed"
  stack: (...)
  get stack: function () { [native code] }
  set stack: function () { [native code] }
  __proto__: Error

我认为这可能是我的虚拟机无法通过我的应用程序以某种方式访问​​的问题,所以我继续将它部署到一个真实的服务器上,但它仍然给出了同样的错误。

有什么想法吗?

【问题讨论】:

  • https://192.168.33.33/api/session 是否可能在您的 get 请求中需要某种标头?
  • @lyjackal 我不这么认为,所有代码都是这样的:d.pr/n/18BiU/3kXPWHcD
  • 如果你使用 XMLHttpRequest 对象而不是 fetch,你会得到同样的错误吗? CORS 设置是否正确?
  • 能否提供您真实服务器的 URL,以便我们重现错误?
  • 你检查同源策略了吗?

标签: javascript reactjs react-native


【解决方案1】:

发现问题并解决。

该问题是由于 API 服务器中有自签名证书而没有自创建 CA。

我可以尝试创建自己的 CA,然后从中创建证书,但我继续进行并获得了便宜的真正 SSL 证书。这样就解决了问题。

【讨论】:

    【解决方案2】:

    我认为您可能面临same origin policy 约束。

    many 的解决方法。

    【讨论】:

    • 感谢您的回答!不幸的是,事实并非如此。
    • 这不适用于 react 原生应用。
    • 同源策略只针对浏览器!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 2021-12-28
    • 2018-04-05
    相关资源
    最近更新 更多