无法使用 react-native 进行 API 调用

IT技术 javascript reactjs react-native
2021-05-27 11:19:21

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

这是代码的一个片段:

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

我认为这可能是我的应用程序无法以某种方式访问​​我的 VM 的问题,所以我继续将其部署到真实服务器上,但它仍然出现相同的错误。

有任何想法吗?

2个回答

发现问题并解决了。

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

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

我认为您可能面临同源政策限制。

很多方法可以解决它。