安全cookie node.js + Heroku + CloudFlare

问题描述 投票:6回答:1

我看过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设置中遗漏了什么?

node.js cookies heroku https cloudflare
1个回答
2
投票

是否可能与CloudFlare将节点应用程序安装在代理后面有关?

引自expressjs / session文档:

如果你的node.js在代理后面并使用secure:true,则需要在express中设置“trust proxy”。

app.set('trust proxy', 1)

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

© www.soinside.com 2019 - 2024. All rights reserved.