如何解决本地tls / ssl网络错误?

时间:2019-11-14 10:44:33

标签: reactjs react-native react-native-android react-native-ios

我使用graphql服务器(在graphql-yoga库中)。

,然后将openssl命令创建的证书应用于“ https”选项。

然后我使用“ https”协议通过pc chrome浏览器连接graphql-playground。

工作正常。

但不适用于使用react-native制作的应用。

它在apollo-boost库中使用apollo客户端。

然后在ApolloClient构造函数选项uri字段中应用testServer地址'https://192.168.0.4:4001'。

应用再次给我网络错误!

 WARN  Possible Unhandled Promise Rejection (id: 1):
Error: Network error: Network request failed
ApolloError@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:102209:32
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:103704:51
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:104124:25
forEach@[native code]
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:104122:35
forEach@[native code]
broadcastQueries@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:104120:29
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:103599:47
tryCallOne@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:27024:16
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:27125:27
_callTimer@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:30579:17
_callImmediatesPass@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:30615:19
callImmediates@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:30834:33
callImmediates@[native code]
__callImmediates@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2591:35
http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2368:34
__guard@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2574:15
flushedQueue@http://localhost:8081/index.bundle?platform=android&dev=true&minify=false:2367:21
flushedQueue@[native code]
callFunctionReturnFlushedQueue@[native code]

请让我知道有关此问题的解决方案。

1 个答案:

答案 0 :(得分:0)

是的,我自己解决了问题。

就我而言,它必须检查两件事。

首先,您必须使用授权证书而不是自签名证书。

(我认为React Native会使用授权证书。)

(所以我使用了“让我们加密”的证书)

第二,您必须在“ httpsOption”对象(在任何graphQLServer中)中记录“ ca”选项(字段)。

就我而言,我不记录“ ca”选项。

所以我记录了'ca'选项和'ca'文件路径,并且效果很好。

(它必须在'httpsOption'中记录密钥,证书和ca选项)

我发现使用axios的原因。

我编写了graphQL查询并使用axios发送了它。

axios请报告错误。与apolloClient不同。

...来自大韩民国。