我主要是做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,直接上代码:

  1. //对wx.request实现二次封装
  2. function(args) {
  3. var that = this;
  4. var header = {
  5. \'content-type\': \'application/json; charset=utf-8\',
  6. \'cookie\': wx.getStorageSync("sessionid")
  7. };
  8. reqObj=wx.request({
  9. url: that.baseUrl + args.url,
  10. method: "POST",
  11. header: header,
  12. data: JSON.stringify(args.data),
  13. success(res) {
  14. var cookie = res.header["Set-Cookie"];
  15. if (cookie != null) {
  16. wx.setStorageSync("sessionid", res.header["Set-Cookie"]);
  17. }
  18. if (args.success) args.success(res);
  19. },
  20. complete(res) {
  21. if (args.complete) args.complete(res);
  22. }
  23. })
  24. }

大功告成。

版权声明:本文为jerryqi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jerryqi/p/9717925.html