微信小程序坑點雜談(三)一分鐘解決登錄狀態session的問題!
一、寫在開頭
本人只是一枚小小的新手開發者,所提的問題和解答很難超過個人水平,如果對你有幫助,那就太好了!
二、發現問題
我們之前講到過,404有大概三種情況,其它兩種比較常見也容易規避,我們來看看比較複雜的第三種session登錄狀態問題。常出現在url和參數完全正確卻報了一些莫名其妙的錯誤。
三、解決問題
wx.request({
url: '後端給你的url地址',
data:{
//寫想要傳遞給後端的數據
},
method:"POST",
header:{
"Content-Type": "application/x-www-form-urlencoded"//post請求必須加這個
},
success(res){
console.log(res)
if (res && res.header && res.header['Set-Cookie']) {//能拿到返回內容且拿到返回內容的header且拿到返回內容的header中的['Set-Cookie'],我們就移除原本在緩存中cookie
wx.removeStorageSync('cookie')//移除緩存中已有的cookie,當然第一次可能沒有
wx.setStorageSync('cookie', res.header['Set-Cookie'])//把我們新拿到的表頭放進去
} else {
console.log("we lost")
}
let cookie = wx.getStorageSync('cookie')//需要的時候從緩存拿到cookie
app.globalData.cookey=cookie//把緩存拿到的cookie存到全局變量裏就可以在其它函數的header中使用啦
console.log(app.globalData.cookey)
}
})//以上就拿到了cookie
這種就是在url和參數沒有問題的情況下,接口依然404或其它錯誤,可能是因爲request每次調用都不會保存之前的session狀態(就如果有些接口需要你登錄後才允許調用的,你也會被視爲沒有登錄而調用出錯)
header: {
"Content-Type": "application/x-www-form-urlencoded",
'cookie': app.globalData.cookey
},
拿到這個cookie我們就可以把它添加我們需要的接口的表頭中了,至此,完成!
大概就這樣了,謝謝大家~~