因为小程序原生不支持Cookie,因此也不支持Session。
网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。
大概思路就是借助小程序本地储存+网络请求的header可读可写来实现类似浏览器的cookies保存session功能。
直接上代码
function NetRequest({url, data, success, fail, complete, method = "POST", header = { 'Content-type': 'application/x-www-form-urlencoded' }}) {
let session_id = wx.getStorageSync('PHPSESSID');//本地取存储的sessionID
if (session_id != "" && session_id != null) { //本地session存在,则放到header里
header.Cookie = session_id;
}
wx.request({
url: url,
method: method,
data: data,
header: header,
success: res => {
//发现response有Set-Cookie,说明本地的PHPSESSID需要更新或不存在:
if(res.header["Set-Cookie"]){
wx.setStorageSync('PHPSESSID', res.header["Set-Cookie"]);
}
res['statusCode'] === 200 ? success(res.data) : fail(res)
},
fail: fail,
complete: complete
})
}
其他语言的Session类似方法皆可实现。