原因:
vue-router切換的時候操作的都是瀏覽器的歷史記錄,iOS會把第一次剛進入時的URL作為真實URL,安卓會把當前URL作為真實URL。
所以導致后端在配置好的授權參數獲得的config參數和微信sdk獲取的參數是不一樣的。
解決方案: 修改路由 index.js
{
path: '/namecheck',
component: NameCheck,
beforeEnter:(to,from,next)=>{
var u = navigator.userAgent;
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
// XXX: 修復iOS版微信HTML5 History兼容性問題
if (isiOS && to.path !== location.pathname) {
// 此處不可使用location.replace
location.assign(to.fullPath)
} else {
next()
}
},
name: 'namecheck',
meta: {
requireAuth: true,
}
},
window.location.assign(url) : 加載 URL 指定的新的 HTML 文檔。 就相當於一個鏈接,跳轉到指定的url,當前頁面會轉為新頁面內容,可以點擊后退返回上一個頁面。
window.location.replace(url) : 通過加載 URL 指定的文檔來替換當前文檔 ,這個方法是替換當前窗口頁面,前后兩個頁面共用一個
窗口,所以是沒有后退返回上一頁的
