做为一个开发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
以下为ajax请求时在header中带上sessionid的客户端代码:json
$.ajax({ type: 'post', headers: { 'Cookie':'JSESSIONID=1k2naixut68f81q5rpr0c3n4vc' }, data: {}, dataType: 'json', timeout: 30000, url: '/test', success: function (res) { alert("success"); }, error: function (e) { alert("false"); } })