微信小程序如何在使用wx.request使用cookie
登录成功后,返回包中含有 res.header.Set-Cookie,将其保存本地,
以后每一次请求头带上"cookie":res.header.Set-cookie;
我主要是做asp.net mvc后端开发的,经常使用Jquery的ajax与后台的Web API进行数据交互。
最近公司要做一个小程序,要实现小程序与Web前端的通信,当然小程序是可以实现socket通信的,那样的话,我需要给小程序写socket接口,给web写restful的接口,很显然我不乐意这么干。
我的各个交互都是需要知道用户状态的,web端使用cookie来保存用户的sessionid,而小程序的wx.request显然没有这个功能。
了解ajax机制的话,我们可以知道,ajax请求每次都会把cookie带上的,而后端正式通过cookie里面的sessionid这个cookie来识别用户的,那么微信小程序里面是不是也可以这么实现呢?
答案当然是可以的,ajax的cookie是通过请求的header带上去的,同理,我们可以在请求之前把这个ID塞进header,直接上代码:
//对wx.request实现二次封装 function(args) { var that = this; var header = { 'content-type': 'application/json; charset=utf-8', 'cookie': wx.getStorageSync("sessionid") //读取本地保存好的上一次cookie }; reqObj=wx.request({ url: that.baseUrl + args.url, method: "POST", header: header, data: JSON.stringify(args.data), success(res) { var cookie = res.header["Set-Cookie"]; if (cookie != null) { wx.setStorageSync("sessionid", res.header["Set-Cookie"]);//服务器返回的Set-Cookie,保存到本地 } if (args.success) args.success(res); }, complete(res) { if (args.complete) args.complete(res); } }) }