【问题标题】:How do I use session and cookies for express.use(express.static('static'))?如何将会话和 cookie 用于 express.use(express.static('static'))?
【发布时间】:2019-11-16 08:28:07
【问题描述】:

我有一个关于来自 Express 后端的网络会话 cookie 的问题。在前面,我使用的是通过 express.use(express.static('static')); 安装在 express static 上的 Vue PWA/SPA 来提供构建文件。

我做了一些研究,我们可以使用

将选项附加到函数中
express.use(cookieParser());
express.use(session({
  secret : `${uuid()}`,
  proxy: true,
  resave: false,
  saveUninitialized: false,
  cookie: {
    maxAge: 1000 * 60 * 30
  }
}))

const options = {
  dotfiles: 'ignore',
  etag: false,
  extensions: ['html', 'htm'],
  index: false,
  maxAge: '1d',
  redirect: false,
  setHeaders: function(res, path, stat) {
    res.set('Set-Cookie', "myCookie=cookieValue;Path=/");
    res.set('x-timestamp', Date.now());
  }
}
express.use(express.static('static' , options));

完成这些之后,希望我可以通过document.cookie 在浏览器上阅读myCookie=cookieValue,但我没有看到页面上打印了这些数据。

我也试过__dirname方法,然后做

app.get("/", function(req, res) {
  req.session.fullname = "Oh mi gee";
  res.render("index");
});

没有给我我想要的。有没有办法让我添加会话/cookies,这样我就可以通过在标头上传递 cookie 数据来确保 API 调用的安全?

提前致谢!

【问题讨论】:

    标签: node.js express session-cookies single-page-application progressive-web-apps


    【解决方案1】:

    我想通了,就是把这个express.static放在express配置的最后。

    在我们建立express.static 之前我们要做的事情

    app.use('/path', (req, res, next) => {
      req.session.views++;
      res.cookie('myCookie', 'cookieValue', {
        maxAge: 1000 * 60 * 30
      });
      console.log(req.session);
      next();
    })
    

    会在半小时后将cookies传输到客户端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2018-10-06
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多