搜尋

首頁  >  問答  >  主體

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

RT,登录页面中提交请求


对应的路由处理

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

PHP中文网PHP中文网2863 天前888

全部回覆(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
  • 取消回覆