小程序 wx.uploadFile 上传文件 iOS 失败 400 错误排查

问题背景

iOS 13 下上传文件,经常性第一次 400,第二次才成功。

 

初步排查

经检查,400 时还没有到后台服务,属于 nginx 层直接返回。

 

获得线索

Google 后得到线索:

iOS 13 对 TLS 要求更严格,所以如果 web server 不满足可能会造成偶发请求失败。具体可参见:https://stackoverflow.com/questions/58011737/ios-13-tls-issue

 

环境对比

同时由于我们是预发布环境没有问题,测试环境有问题,所以排查了预发布和测试的 web server 配置,可以使用检测网站:https://www.ssllabs.com/ssltest/index.html

检测出预发布环境和测试环境都支持 TLS1.2,针对 Safari 的检测结果为 预发布环境是 TLS 1.2>http/1.1,测试环境为 TLS 1.2 > h2 

 

所以怀疑是 iOS 在 http2 下的问题,最后测试环境改为 http/1.1 后,问题解决

 

最后结论

如果有类似问题可以从以下几个方面排查

1. 如果 web server(如 nginx)不支持 TLS 1.2,可以更改配置后验证

2. 如果已支持 TLS 1.2,可以检查是否启用了 HTTP/2,可以关闭后验证

posted @ 2020-07-02 10:59  savokiss  阅读(1155)  评论(0编辑  收藏  举报