React Native 响应本机Expo网络请求失败HTTPS

carvr3hs  于 2022-11-17  发布在  React
关注(0)|答案(1)|浏览(293)

我目前正在开发一个应用程序,它有一个单独的前端和后端。
后端是 Spring Boot ,只接受带有自签名证书的HTTPS。前端是和React Native App with Expo。
目前,我无法通过前端发送HTTPS请求。当我这样做时,它给我以下错误:

Network request failed
at node_modules\whatwg-fetch\dist\fetch.umd.js:null in setTimeout$argument_0
at node_modules\react-native\Libraries\Core\Timers\JSTimers.js:null in _allocateCallback$argument_0
at node_modules\react-native\Libraries\Core\Timers\JSTimers.js:null in _callTimer
at node_modules\react-native\Libraries\Core\Timers\JSTimers.js:null in callTimers
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:null in __callFunction
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:null in __guard$argument_0
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:null in __guard
at node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:null in callFunctionReturnFlushedQueue

我更新了我的自签名证书,因为我在网上看到可能会导致问题。以下是packagejson中的脚本:

"scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web"
  },

我发送请求的代码可以在这里找到:

login = () => {
        const data = { email: email, password: password};
        const options = {
            method: 'POST',
        };
        console.log(data);
        fetch(`https://192.xxxx:8443/login?email=${encodeURIComponent(data.email)}&password=${encodeURIComponent(data.password)}`, )
        .then((reponse) => reponse.json())
        .then(responseJson => {
            console.log(responseJson);
            
        })
        .catch((error) => console.log(error));
    };

其中xxxx是从命令提示符中找到的IP地址。我不知道是什么导致了这个问题。请求没有到达前端,但是当我使用postman时,它们工作得很好。我不知道我是否必须在前端中包含crt文件并更改配置,或者只是为前端创建一个新文件,这样两者都是安全的,可以通信。
有人能帮我解释一下错误和逻辑吗?

  • 已续订证书
  • 已转换为Ipv4
r6vfmomb

r6vfmomb1#

问题是IOS无法定位localhost。两个IP都不工作。我使用ngrok在线托管本地主机。这样网络错误就被修复了。

相关问题