微信小程序 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 相关文章推荐
html下载本地
Jun 19 Javascript
javascript 模式设计之工厂模式详细说明
May 10 Javascript
SinaEditor使用方法详解
Dec 28 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
Mar 15 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
Apr 11 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
在博客园博文中添加自定义右键菜单的方法详解
Feb 05 Javascript
JS实现横向跑马灯效果代码
Apr 20 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
May 18 Javascript
JS中如何优雅的使用async await详解
Oct 05 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脚本的10个技巧(6)
2006/10/09 PHP
php curl_init函数用法
2014/01/31 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
php提取微信账单的有效信息
2018/10/01 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
js 显示日期时间的实例(时间过一秒加1)
2017/10/25 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Android分包MultiDex策略详解
2017/10/30 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
python模拟事件触发机制详解
2018/01/19 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
工程索赔意向书
2014/08/30 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
学生逃课检讨书
2015/02/17 职场文书
Tomcat配置访问日志和线程数
2022/05/06 Servers