当我使用不同的快速会话版本尝试下面的示例时,我遇到了一个问题。
使用快速会话1.0.2
var connect = require('express'),
cookieParser = require('cookie-parser'),
session = require('express-session');
var app = connect();
app.use(cookieParser())
.use(session({secret:'sessionsecret',cookie:{maxAge:60000}}))
.use(function(req,res,next){
if(req.session.views){
res.setHeader('Content-Type','text/html');
res.write('<p>views ' + req.session.views + '</p>');
//Here
res.end();
req.session.views++;
}
else {
req.session.views = 1;
res.end('welcome to the demoe. Try refresh this page');
}
})
.listen(3000);这是可行的;当我刷新页面时,视图计数器不断增加。但是,当我将快速会话更改为1.8.2 (最新版本)时,该代码将停止工作,视图计数器将保持在1。但是,在我将代码修改为以下代码后,它再次工作:
var connect = require('express'),
cookieParser = require('cookie-parser'),
session = require('express-session');
var app = connect();
app.use(cookieParser())
.use(session({secret:'sessionsecret',cookie:{maxAge:60000}}))
.use(function(req,res,next){
if(req.session.views){
res.setHeader('Content-Type','text/html');
res.write('<p>views ' + req.session.views + '</p>');
//Here
req.session.views++;
res.end();
}
else {
req.session.views = 1;
res.end('welcome to the demoe. Try refresh this page');
}
})
.listen(3000);在新的快速会话中发送响应之前,会话数据似乎正在保存。有人能解释一下吗?
发布于 2014-10-13 05:26:22
是的,ExpressJS会话无法在调用req.session对象或发送任何内容数据之后保存res.end()对象。
这样做的原因是,只有在发送标头时才能设置cookie (因此只能保存会话);在发送标头(发送内容)之后,不能重置cookie,也不能保存会话。
您可以看到操作中的代码这里。
https://stackoverflow.com/questions/26333149
复制相似问题