微信小程式踩坑–設定cookie保持session
阿新 • • 發佈:2018-11-09
由於每次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請求中拿不到資料的情況發生。