这可能不是您正在寻找的确切答案,但我会为未来的读者回答标题:
通过对我的应用程序进行试验,我注意到express-session仅在您操作会话对象时才会设置会话 cookie 。
例如考虑下面的代码:
app.post('/login', function (req, res) {
var authenticated = false;
if (req.session.authenticated) {
// session cookie is already set
authenticated = true;
} else if (/*validate the user here*/) {
console.log(' authenticating');
authenticated = true;
// if below line executes, the response will have Set-Cookie header
req.session.authenticated = authenticated;
}
res.json({
status: authenticated
//if --^ false, no session cookie will be set since we didn't manipulate session object
});
});
尽管请求在内存中创建了一个会话对象供我们使用,但Set-Cookie
似乎只有在我们操纵(或篡改?)创建的会话对象时才会发送标头。
除非我们将Set-Cookie
标头与响应一起发送并且会话 ID 存储在客户端的 cookie 中,否则我不会将其视为已建立的会话并担心它。
希望能帮助到你。
旁注:这是跨域ajax请求的情况,对于正常的http请求可能会有所不同,也许有人可以确认这一点