客户端页面跳转后session丢失

RT,登录页面中提交请求

clipboard.png
对应的路由处理

clipboard.png

我把从数据库里取出来的account信息放到了session中,然后返回成功状态和一个重定向url,然后在action中直接用window.location.href = redirecurl来跳转,服务端能收到get请求,但是req.session中得account信息却丢失了,这是为什么???

阅读 12k
5 个回答

检查是否在同一域名下面跳转

这一express中默认的session对应的cookie名称是一个固定值,如果你在一个域名上部署了多个express应用,但是没有设置session的cookie名称,就会互相冲突,所以还是设置一下:

app.use(session({
    secret: '这里是加密参数',
    key:'session对应的cookie名称',
    resave: false,
    saveUninitialized: true
})
);

上面的例子是基于express4.0给出的

明显是session id丢失了。推测应该是没有更新http response的头部的set cookie属性,导致session id没有返回给客户端。抓个包包看看服务端在发送重定向响应的时候有没有把session id也放到response的头部。然后再看看客户端在重定向再请求服务端的时候有没有把session id带上去

服务器端有多台的话,session就会丢失。问问你们的服务端工程师
研究一下cookie与session的原理,你就明白了

session本质上是一个ID,要么在post/get里,要么在cookies里,你打开调试工具看看发出去什么了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题