微信小程序踩坑–設置cookie保持session

由於每次wx.request()都會先經過微信服務端再到服務器端,所以每一次request都會創建一個新的session。並且微信小程序是沒有cookie機制的,要維持會話需要自己來保存cookie,並且請求的時候加上帶有sessionid的cookie。

客戶端向服務端發起請求時,session信息是存放在cookie中以請求頭的方式帶回給服務端的,而請求頭中具體的信息就是sessionid。服務器端通常會在response的header中加上Set-Cookie,以便瀏覽器在header中加上sessionid等信息。由於微信小程序沒有cookie機制,所以需要人爲地保存Set-Cookie的值,直接加到請求頭中。

wx.request({
url: app.globalData.url+'/user/login',           //login
data: { 
id: objData.userId,
password: objData.userPassword
},
header: { 'Content-Type': 'application/x-www-form-urlencoded' },
method: 'POST',
success: function (res) {
    if (res && res.header && res.header['Set-Cookie']) {
         wx.setStorageSync('cookieKey', res.header['Set-Cookie']);   //保存Cookie到Storage
    }
}
})
let cookie = wx.getStorageSync('cookieKey');//取出Cookie
let header = { 'Content-Type': 'application/x-www-form-urlencoded'};
if (cookie) {
     header.Cookie = cookie;
}
console.log(cookie)

然後在wx.request()中請求頭直接設置成這個header就行了,需要提一嘴的是,加入Set-Cookie之前的cookie並不直接設置爲空,而是

let header = { 'Content-Type': 'application/x-www-form-urlencoded'};

這樣能避免在POST請求中拿不到數據的情況發生。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章