首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >会话数据在使用快速会话时不会保存到内存中。

问会话数据在使用快速会话时不会保存到内存中。
EN

Stack Overflow用户
提问于 2014-10-13 04:59:16
回答 1查看 382关注 0票数 0

当我使用不同的快速会话版本尝试下面的示例时,我遇到了一个问题。

使用快速会话1.0.2

代码语言:javascript
复制
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。但是,在我将代码修改为以下代码后,它再次工作:

代码语言:javascript
复制
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);

在新的快速会话中发送响应之前,会话数据似乎正在保存。有人能解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-13 05:26:22

是的,ExpressJS会话无法在调用req.session对象或发送任何内容数据之后保存res.end()对象。

这样做的原因是,只有在发送标头时才能设置cookie (因此只能保存会话);在发送标头(发送内容)之后,不能重置cookie,也不能保存会话。

您可以看到操作中的代码这里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26333149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档