由於每次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請求中拿不到數據的情況發生。