wx.request发起请求时,不会主动携带Cookie头,并且响应是有正常的Set-Cookie头部字段返回的。虽然移动端和有各种Token的解决方案,但是当后台不想这么麻烦就能使用Session功能时。微信小程序只需要简单的封装就能够实现。
对于后台是Tomcat的并且使用JSESSIONID作为Cookie字段的场景,
改造思路如下:
1 使用代理模式封装wx.request
2 封装一个全局的wx.$request函数,代替wx.request。
3 每次请求成功后的地方,统一保存Set-Cookie
可用Storage来保存。
4 每次发请求之前,统一发送Cookie请求头。
全部内容如下:
//app.js
wx.$request = function (option) {
//包装一下。
let _op={
complete(res){
//1判断并解析JSESSIONID
let jessionid = res.header["Set-Cookie"];
if (jessionid ){
let start = jessionid.indexOf("JSESSIONID");
let end = jessionid.indexOf(";",start);
jessionid = jessionid.substring(start,end);
//2 保存JESSIONID
wx.setStorageSync("JSESSI