除了信任代理之外,Heroku 上的快速会话安全 cookie 是否还有其他设置?
Any additional settings for express-session secure cookies on Heroku besides trust proxy?
我正在尝试在 Heroku 上的 express 应用 运行 上设置安全 cookie。我在会话配置中尝试了 app.set('trust proxy', true)
和设置 proxy: true
。在这两种情况下,一旦使用 SSL 证书部署到 Heroku,cookie 就无法修改。
其他:我从未在会话中实现 resave = true
,因为 mongo-connect 有触摸方法。
userSessionStore = new MongoDBStore({
url: 'foo',
collection: 'bar',
touchAfter: 3600,
});
const sess = {
secret: process.env.SESSION_SECRET,
name: 'name',
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 1 * 24 * 60 * 60 * 1000
},
store: userSessionStore
};
if (process.env.NODE_ENV === 'production') {
sess.cookie = {
secure: true,
httpOnly: true,
domain: baseURL
};
}
app.use(session(sess));
if (process.env.NODE_ENV === 'production') {
app.set('trust proxy', true);
}
此问题是由于 baseURL 变量与 heroku 上的主机和子域不匹配。由于 heroku 在 foo.herokuapp.com 托管了许多应用程序,因此需要匹配子域。
我正在尝试在 Heroku 上的 express 应用 运行 上设置安全 cookie。我在会话配置中尝试了 app.set('trust proxy', true)
和设置 proxy: true
。在这两种情况下,一旦使用 SSL 证书部署到 Heroku,cookie 就无法修改。
其他:我从未在会话中实现 resave = true
,因为 mongo-connect 有触摸方法。
userSessionStore = new MongoDBStore({
url: 'foo',
collection: 'bar',
touchAfter: 3600,
});
const sess = {
secret: process.env.SESSION_SECRET,
name: 'name',
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 1 * 24 * 60 * 60 * 1000
},
store: userSessionStore
};
if (process.env.NODE_ENV === 'production') {
sess.cookie = {
secure: true,
httpOnly: true,
domain: baseURL
};
}
app.use(session(sess));
if (process.env.NODE_ENV === 'production') {
app.set('trust proxy', true);
}
此问题是由于 baseURL 变量与 heroku 上的主机和子域不匹配。由于 heroku 在 foo.herokuapp.com 托管了许多应用程序,因此需要匹配子域。