我的应用程序突然无法与后端连接。(只有安卓版本,iOS工作没有任何问题)。此外,我可以使用浏览器请求API,而不会出现问题。
当问题开始时,服务器端或移动应用程序中没有任何变化,但所有android应用程序都停止了与服务器的连接。
移动应用程序中的例外情况是:java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
我已经检查了堆栈溢出的每一个答案,但是到目前为止没有什么有效。以下是要点:
react-js
服务器上的nginx 1.22.1
应用程序。在移动电话中:
fetch
而不是axios
,但也无法连接。pinning
作为临时解决方案,但问题是,我使用的是,而我没有找到使用它的方法。一些相关的依赖版本是:
"dependencies": {
...
"axios": "^1.1.3",
"expo": "^44.0.0",
"expo-cli": "^5.4.3",
"react": "17.0.1",
"react-native": "0.64.3",
"react-native-gesture-handler": "~2.1.0",
...
},
在服务器中:
certbot
和标志--preferred-chain="ISRG Root X1"
续订证书。考虑到所有这些测试,这似乎是服务器端的问题,但是没有其他设备有问题,只有android;我还测试了证书及其OK。
我也用这个网站https://www.ssllabs.com/sstest测试证书。
这就是结果
如果你能给我任何线索,我将不胜感激。
致以问候!
发布于 2022-11-23 00:35:41
我成功地将应用程序与我的API连接起来,但我仍在研究问题的根源。
更多背景:
这似乎是库axios
(特别是axiosinstance
)的一个问题。这很奇怪,因为我没有改变android应用程序中的任何东西,它只是突然停止工作。(同时出现在所有android设备中)。
在进行测试时,我意识到axiosinstance
通过执行请求(除了我已经向您展示的请求)而失败了,但是如果我在应用程序中指向我的API的第一个请求是通过使用axios
来实现的,那么axiosinstance
就可以毫无例外地执行对我的API的任何请求。
我知道这听起来很奇怪,但现在我的应用程序又开始工作了。
另一方面,为了让您知道,我还测试了一个名为API Tester v5.6
的安卓应用程序,它无法连接到我的API,这给了我同样的例外,但是它的上一个版本API Tester 5.7
(几天前发布的)没有问题。
我还试图用ApiClient v2.4.7
连接我的API,但同样的例外情况下,它失败了。
再次,我不明白什么是真正的问题,但肯定不是证书。
不管怎样,现在你知道了,也许我应该把这个问题告诉公理的人?
致以问候!
https://stackoverflow.com/questions/74509259
复制相似问题