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

一·背景描述

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

二·问题排查

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

这里写图片描述

通过小程序数据助手分析得知,出问题前大部分用户是 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.”}
这里写图片描述

三·解决方案

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

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值