如何从请求中获取sessionId?

我使用快递来支持我的会话pipe理:

app.use(express.cookieParser('your secret here')); app.use(express.session({secret: 'mysecretcode'})); 

我从请求中提取和保存sessionId。 但是,我从req.sessionID获得的ID与cookie中发送的ID不同:

 req.sessionID --> 'E7oSoKmQfcMKnk5_jA5tF5vR' cookie.connect.sid --> 's%3AE7oSoKmQfcMKnk5_jA5tF5vR.DQnYdDDcFn8K2JJHMgWL5DTzNYYwIU3DA5a10WImA7U'; 
  1. 为什么这两个不同?
  2. 如何在发送回复之前获取connect.sid?

       

网上收集的解决方案 "如何从请求中获取sessionId?"

我读了connect.session的源代码,得到:

 key = options.key || 'connect.sid' 

 var val = 's:' + signature.sign(req.sessionID, secret); val = cookie.serialize(key, val); debug('set-cookie %s', val); res.setHeader('Set-Cookie', val); 

所以,连接会在响应的'header'事件触发时将cookie设置为响应头部,而当您调用response.end()时,connect会将会话数据保存到store中。

而已。