【问题标题】:secure cookies node.js + Heroku + CloudFlare安全 cookie node.js + Heroku + CloudFlare
【发布时间】:2021-01-15 22:31:35
【问题描述】:

我看过 this answerthis answer 但没有骰子。我的问题是,当通过https://appname.herokuapp.com 访问我的应用程序时,一切正常。但是当通过https://www.appname.com(CloudFlare 别名为https://appname.herokuapp.com)访问时,它就会崩溃。

具体来说,当用户登录时,身份验证被正确处理,但用户会话cookie设置不正确。因此,当登录的用户被转发到下一个屏幕时,请求会被拒绝为未经授权的。

现在我正在快递中这样做:

var mySession = session({
    key: "sid",
    secret: process.env.SESSIONS_SECRET,
    proxy: true,
    cookie: {
        maxAge: 86400000,
        secure: true,
    },
    store: rDBStore,
    resave: false,
    saveUninitialized: true,
    unset: 'destroy'
});

app.enable('trust proxy');
app.use(mySession);

我的节点代码或 CloudFlare 设置中是否缺少某些内容?

【问题讨论】:

  • 我也有同样的问题。你解决了吗?
  • @Marc,不,不幸的是我从来没有这样做过。
  • 你能解决这个问题吗?通过使用 app.set('trust proxy', 1)

标签: node.js cookies heroku https cloudflare


【解决方案1】:

这可能与 CloudFlare 将节点应用程序实例放在代理后面有关吗?

引自 expressjs/session 文档:

如果您的 node.js 位于代理后面并且使用的是 secure: true,则需要在 express 中设置“信任代理”。

app.set('trust proxy', 1)

https://github.com/expressjs/session#cookiesecure

【讨论】:

  • 有一个相同的问题,这解决了它。应该这样标记。 谢谢
猜你喜欢
  • 2013-01-06
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 2012-02-09
  • 1970-01-01
相关资源
最近更新 更多