TypechoJoeTheme

Yuuuuuu

Uniapp/小程序网络请求出现错误errno: 600001的解决方案

最近调试一个小程序提交上线,每天都几百人使用,但是经常有人反应小程序出现请求错误,包括图片加载不出来,微信登录提示失败,菜单无法获取等,出错率甚至一度达到10%,于是我就开始排查。

首先看了眼后台没有问题,没有报错请求,看nginx日志配合客户反应出错的时间点,发现小程序出问题时根本没有请求到后端来,那么问题就是出在前端了。

首先我想到的是不是代码有错误,于是查看了微信We分析的js日志,发现零零散散的几个报错,还都是css样式问题,这里排除。

小程序是使用Uniapp开发的,使用了luch-request这个请求框架,然后我又想到是框架有bug不适配,于是在代码里加了日志上报,把所有请求的拦截器错误信息都上报到微信,过了一段时间一看日志,发现了几百条错误信息,全部都是网络请求错误,看来问题是出在这了。

错误信息包括但不限于以下:

{"errno":600001,"errMsg":"request:fail errcode:-101 cronet_error_code:-101 error_msg:net::ERR_CONNECTION_RESET"} 

{"errno":600001,"errMsg":"request:fail -101:net::ERR_CONNECTION_RESET"} 

{"errno":600001,"errMsg":"request:fail errcode:-7 cronet_error_code:-7 error_msg:net::ERR_TIMED_OUT"}

{"errno":600001,"errMsg":"request:fail -109:net::ERR_ADDRESS_UNREACHABLE"}

{"errno":600003,"errMsg":"request:fail interrupted"}

{"errno":5,"errMsg":"request:fail timeout"}

其中600001是最多的,还有一些600002的报错,但是我在我手机和店员的手机上都没能复现错误,没办法只能开始面向Google编程,做了如下处理:

  1. 首先怀疑是证书问题,因为原来是使用的Let's Encrypt免费证书,我担心是不是小程序不兼容,申请了腾讯云免费证书换上,然后去https://myssl.com/检测证书,评级是A,证书链也完整,非常健康,但是问题依旧。
  2. 然后我又怀疑是不是TLS版本影响,因为客户反应说安卓问题比较多而且机型也不老旧,IOS也有但是没那么多,我看到有人说安卓新版本证书验证更严格了,而服务器目前是支持了ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3这三个版本,我怀疑TLSv1.3可能存在不兼容,于是改成ssl_protocols TLSv1.1 TLSv1.2,没用;又想是不是旧版本拖后腿呢,于是改成ssl_protocols TLSv1.2 TLSv1.3;,没用;最后只留下ssl_protocols TLSv1.2;,还是一样,问题依旧。
  3. 还有哪里又问题呢,带宽?有可能,小程序图片比较多而且有很多大图都没处理,服务器带宽又只有10M左右,并发高的情况下可能会导致请求失败吗?不好说,试试吧,把所有资源文件传到腾讯云CDN,又花钱买了https请求包,小程序加载速度是快了,但是问题依旧。
  4. 请求时间?http请求超时已经改到60s了,也不可能,而且也尝试开启了http2和不验证ssl证书,都没用,问题依旧。
  5. 新版机型才有的问题,新机型有什么不一样呢?IPv6!对了!有些手机默认是开启IPv6的,但是服务器可能并不支持IPv6又或者没有IPv6的地址,会不会也有影响?赶紧跑到服务器看了下,果然开着IPv6,赶忙关闭然后重启网络服务,满心欢喜,但问题依旧。
  6. IP没问题,DNS呢?会不会服务器DNS或者域名解析DNS服务器有问题?服务器网络问题?一个个都尝试修改,问题依旧。
  7. 请求token太长?校验合法域名?没备案?强制https跳转?都不对,问题依旧。
  8. 搜索引擎都被我翻烂了,ChatGPT都问哑火了,怎么回事小老弟?最后只能从线下客户入手了,让店员把API的域名打印成二维码,找到出问题的客户,直接让他们帮忙扫码看有无问题,最后您猜怎么着嘿?所有出问题的客户扫码都TM跳转到一个地址:

原来域名被反诈中心误拦截了,我刚申请的新域名啊!我TM

江苏真行

赞(1)
评论 (0)