찾다

 >  Q&A  >  본문

node.js - 客户端页面跳转后session丢失

RT,登录页面中提交请求


对应的路由处理

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

PHP中文网PHP中文网2782일 전843

모든 응답(5)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-17 12:11:08

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

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-17 12:11:08

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

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

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

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 12:11:08

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

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 12:11:08

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

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-17 12:11:08

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

    회신하다
    0
  • 취소회신하다