(此博客实用于微信像小程序开发的session问题,网页开发的session问题与微信小程序类似,但是涉及到的js语法会有略微差异不同。)
在微信小程序中,我们运用wx.request()向服务器请求信息的时候,我们每一次请求对于服务器来说都是新的的对话。但是我们有的时候需要连续两次访问的是相同的数据,比如我第一个页面想要得到服务器里一本书的封面、作者、简介,到下一个页面我还想得到这本书的每一章节的内容,那这个时候我们就需要让服务器知道我们上一次的请求。那该如何解决这个问题呢?
首先我们要引出一个名词:session。这里的session不是小程序通过wx.login()方法维护的session,而是我们自己的服务端的session。正常情况下,客户端向服务端发起请求时,session信息是存放在cookie中以请求头的方式带回给服务端的,而请求头中具体的信息就是session的id。
解决办法也和session的id有关。就是小程序首次执行wx.requst()的时候将小程序sessionId保存起来,在之后的每次请求中在请求头中携带sessionId。
步骤一:若请求成功,将cookie保存到Storage中,session是服务器维护的会话,cookie是客户端(浏览器)持有的保存一些数据的,那么session实际上是通过cookie识别的。
success: function (res) {
if (res && res.header && res.header['Set-Cookie']) {
wx.setStorageSync('cookieKey', res.header['Set-Cookie'])//保存Cookie到Storage
}
}
步骤二:session信息是存放在cookie中以请求头的方式带回给服务端
header: {
"Cookie": "JSESSIONID=" + wx.getStorageSync("sessionKey")
}