【问题标题】:Can't get cookies to send with request in Express 4无法在 Express 4 中通过请求发送 cookie
【发布时间】:2015-03-22 02:07:49
【问题描述】:

这是我的初始配置:

var session         = require('express-session');
var cookieParser    = require('cookie-parser');
app.use(session({
  saveUninitialized: true,
  resave: false,
  genid: function(req) {
    return Services.misc.generateUUID()
  },
  secret: secret.toString()
}));
app.use(cookieParser(secret));

然后在我的控制器中(它通过一个死的简单路由器路由到一个控制器,然后根据类似 Rails 的命名约定呈现适当的操作)我会做这样的事情:

var TestController = {
  noaction: function(req, res) {
    var locals = {
      billy: 'the goat'
    }

    console.log('req session'.red, req.session);
    res.cookie('test_cookie', 'Wu Tang Clan');

    this.services.render.view(req, res, this, 200, locals);
  }

module.exports = TestController;

注意this.services.render.view只是一个服务,所以我不必写res.render('./app/controllers' + controller + '/' + action)

注意控制器中的 res.cookie 行 (docs on express.js)。这就是官方文档所说的,事实上,它是在浏览器中设置的:

但是,res.cookie 上面的行是一个日志,我想我们应该有test_cookie,但是:

我每次得到的只是一个标准的空白 cookie,即使它是在浏览器端设置的并且应该是发送的。

我的问题是:如何在 Express 4 中正确设置和接收 cookie?

【问题讨论】:

    标签: javascript session cookies express express-4


    【解决方案1】:

    答案如下:每次 nodemon 重新启动服务器以传播代码更​​改时,会话都会被清除。

    【讨论】:

      【解决方案2】:

      您的代码似乎还可以,正如dsp_099所说,它可能是nodemon。 express-session 将数据保存在内存中,因此当您重新启动服务器(使用 nodemon 自动)时,所有内存数据都会被重置。

      即使节点重新启动,我也想保留会话数据,我建议你使用 redis-session(Redis 数据库)

      【讨论】:

        猜你喜欢
        • 2014-10-09
        • 1970-01-01
        • 2019-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 1970-01-01
        相关资源
        最近更新 更多