无法使用 react-native 进行 API 调用
Unable to make API calls using react-native
我在本地有一个使用 Vagrant 构建的虚拟机 运行。我可以卷曲并直接从浏览器转到 URL。出于某种原因,当我使用 fetch
API 在我的 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
记录 returns 右边 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 无法通过我的应用程序以某种方式访问的问题,所以我继续将它部署到真实服务器,但它仍然出现相同的错误。
有什么想法吗?
我认为您可能面临 same origin policy 限制。
有 many 种解决方法。
找到问题并解决了。
问题是由于 API 服务器中没有自创建 CA 的自签名证书引起的。
我可以尝试创建自己的 CA,然后从中创建证书,但我继续并获得了便宜的真实 SSL 证书。那解决了问题。
我在本地有一个使用 Vagrant 构建的虚拟机 运行。我可以卷曲并直接从浏览器转到 URL。出于某种原因,当我使用 fetch
API 在我的 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
记录 returns 右边 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 无法通过我的应用程序以某种方式访问的问题,所以我继续将它部署到真实服务器,但它仍然出现相同的错误。
有什么想法吗?
我认为您可能面临 same origin policy 限制。
有 many 种解决方法。
找到问题并解决了。
问题是由于 API 服务器中没有自创建 CA 的自签名证书引起的。
我可以尝试创建自己的 CA,然后从中创建证书,但我继续并获得了便宜的真实 SSL 证书。那解决了问题。