因为小程序原生不支持Cookie,因此也不支持Session。
网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。
大概思路就是借助小程序本地储存+网络请求的header可读可写来实现类似浏览器的cookies保存session功能。
直接上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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类似方法皆可实现。