长话短说,为什么拿不到session的值,原因如下:
重点在于cookie这个点,因为小程序的请求并没要为我们自动保存cookie,导致服务端的session验证不了请求的来源,每次都会新注册一个session
那怎么解决?
很简单,既然小程序没有这个机制,我们手动给它补上,OK,看下代码
// 拿到服务sessionId
const sessionId = getSessionId()
// 为请求头上的cookie添加sessionId
const header = {
'cookie': sessionId
}
const RequestTasks = wx.request({...,header,...})
// 拿到响应头的sessionId
RequestTasks.onHeadersReceived(res=>{
const sessionId = res.header["Set-Cookie"]
setSessionId(sessionId)
})
const getSessionId = () => {
const sessionId = wx.getStorageSync('serveSessionId') || ''
return sessionId
}
const setSessionId = sessionId => {
wx.setStorageSync('serveSessionId', sessionId)
}
以上就是解决session不同步的问题,是不是很简单
网友评论