微信小程序 http请求的session管理


Posted in Javascript onJune 07, 2017

微信小程序 http请求的session管理

作为一个开发JavaWeb应用的程序猿,都喜欢将用户登录后的用户信息(比如说用户id,用户名称)放入session中保存,之后在业务逻辑的开发中需要用到用户信息的时候就可以轻松又方便的从session中取到值。最近在开发微信小程序的时候碰到一个问题就是每次微信小程序请求的时候都会改变sessionid,这就会导致在后面的请求中取不到登录时保存在session中的用户信息,其实在前后端分离开发的时候也会碰到这个问题,后端程序员负责服务器端开发,提供接口程序,前端程序员负责客户端开发,调用后端程序员提供的接口程序获取数据,此时,前端程序员请求的每个接口程序也是都会改变sessionid的,因些也无法获取到登录时保存在session里的用户信息。

    常见的session保持方式是,当浏览器向服务端发起http请求时,服务端检查在http头部cookie参数里是否包含sessionid,如果有sessionid就根据sessionid去查看存储在服务器端的session,session里保存的当前会话的一些信息。如果sessionid没有服务端就会分配一个,写到cookie字段里,浏览器下次发起其它请求的时候带上。

    因此,为了解决上面我说的问题,我们可以这样做,客户端在第一次请求服务器时,也就是登录的时候获得一个sessionid,在本地存储起来,然后在之后每次请求服务器的时候就在header里面带上这个sessionid,写到cookie字段里。但是有个问题就是,你本地存储了这个sessionid后那么以后每次都会是这个sessionid,所以建议在程序每次启动的时候先清空本地存储的sessionid,然后发送首次请求获取新的sessionid。

如下为ajax请求时在header中带上sessionid的客户端代码:

$.ajax({
      type: 'post',
      headers: {
        'Cookie':'JSESSIONID=1k2naixut68f81q5rpr0c3n4vc'
      },
      data: {},
      dataType: 'json',
      timeout: 30000,
      url: '/test',
      success: function (res) {
        alert("success");
      },
      error: function (e) {
        alert("false");
      }
    })

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
js 模拟实现类似c#下的hashtable的简单功能代码
Jan 24 Javascript
js里取容器大小、定位、距离等属性搜集整理
Aug 19 Javascript
jQuery之过滤元素操作小结
Nov 30 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
Dec 13 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
详解js私有作用域中创建特权方法
Jan 25 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
jQuery siblings()用法实例详解
Apr 26 Javascript
bootstrap 通过加减按钮实现输入框组功能
Nov 15 Javascript
vue中路由验证和相应拦截的使用详解
Dec 13 Javascript
Vue入门之数据绑定(小结)
Jan 08 Javascript
seajs和requirejs模块化简单案例分析
Aug 26 Javascript
Ionic2开发环境搭建教程
Aug 20 #Javascript
微信小程序Redux绑定实例详解
Jun 07 #Javascript
Ionic3 UI组件之Gallery Modal详解
Jun 07 #Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 #Javascript
vue2.0 自定义日期时间过滤器
Jun 07 #Javascript
详解Node.js 命令行程序开发教程
Jun 07 #Javascript
详解vee-validate的使用个人小结
Jun 07 #Javascript
You might like
php class类的用法详细总结
2013/10/17 PHP
php操作xml
2013/10/27 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
PHP使用递归生成文章树
2015/04/21 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
PDO::errorCode讲解
2019/01/28 PHP
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
vue中activated的用法
2021/01/03 Vue.js
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
python 字典操作提取key,value的方法
2019/06/26 Python
python 经典数字滤波实例
2019/12/16 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
HTML文本属性&颜色控制属性的实现
2019/12/17 HTML / CSS
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
电子商务个人自荐信
2013/12/12 职场文书
运动会广播稿100字
2014/01/11 职场文书
消防安全承诺书
2014/05/22 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
python异常中else的实例用法
2021/06/15 Python
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript