1. 程式人生 > >【小程式】部分機型小程式使用者無法發起wx.request請求,網路錯誤問題解決方案

【小程式】部分機型小程式使用者無法發起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請求。 更換證書問題解決。

那什麼樣的證書可以被信任呢。可以在更換證書後 用 主流瀏覽器測試一些,是否被主流瀏覽器信任。 我出這個問題之前是因為沒有被火狐瀏覽器開發者版信任,谷歌瀏覽器是信任的。當時自己手機測試沒問題 就上線了。沒想到 不同的機型的手機。對證書的信任級別也不同