【小程序】部分机型小程序用户无法发起wx.request请求,网络错误问题解决方案

一·背景描述

最近一直在开发小程序后端,也开始自己学习开发小程序前端了,遇到个问题比较郁闷。自己朋友和用户的手机在访问小程序的时候 会提示网络错误,提示这个问题 只有在wx.request 发起向后端接口的请求失败后才会提示。

二·问题排查

1·微信开发者工具 发起请求无问题 2·笔者机型iphone6 发起请求无问题 3·已知出现该问题的机型:华为荣耀,诺基亚X6 等安卓机。

【小程序】部分机型小程序用户无法发起wx.request请求,网络错误问题解决方案_第1张图片

通过小程序数据助手分析得知,出问题前大部分用户是 iphone 机型,只有个别的安卓机没出问题

3·附 前端 wx.request 请求代码

wx.request({
    "header": {
      "Content-Type": "application/json",
      "X-Token": userInfo?userInfo.token : '',
      "X-UserId": userInfo ? userInfo.userId ? userInfo.userId:'' : ''
    },
    "url" : `${root}${url}`,
    "method" : method,
    "data" : data,
    "success" : ({data})=> {
      var code = data.code || data.CODE;
      if(code === 200) {
        onSuccess(data);
      } else if(code === 401){
        getApp().login(()=>{
          onError && typeof onError == 'function' && onError(data);
        });
      } else{
        onError && typeof onError == 'function' && onError(data);
      }
    },
    "fail" : (e)=> {
      console.log(e,999)
      if (e.errMsg ==="request:fail abort")return;
      wx.showModal({
        title: '提示',
        content: '请求失败,请检查网络',
        showCancel: false,
        confirmColor: '#0f77ff',
        success: (res) => {}
      })
    },

  }

我们在fail 里 添加打印 异常信息 console.log(e,999) ,出错机型 通过微信开发者工具远程调试 ,console 里 打印如下:

{“errMsg”:”request:fail ssl hand shake error:java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.”}
【小程序】部分机型小程序用户无法发起wx.request请求,网络错误问题解决方案_第2张图片

三·解决方案

到此我们已经可以知道 ,是因为 部分安卓机型因为后端接口https 数字证书,没有被信任导致的 没有发起wx.request请求。 更换证书问题解决。

那什么样的证书可以被信任呢。可以在更换证书后 用 主流浏览器测试一些,是否被主流浏览器信任。 我出这个问题之前是因为没有被火狐浏览器开发者版信任,谷歌浏览器是信任的。当时自己手机测试没问题 就上线了。没想到 不同的机型的手机。对证书的信任级别也不同

你可能感兴趣的:(Java后端,Java前端)