Express-Session 在开发环境中工作,因为它在我的浏览器中设置了“connect.sid”cookie。但是,在生产中,它不存储 cookie,而是使用相同的会话 - 它每次都会创建一个新会话。我相信如果我能以某种方式保存第三方 cookie,这个问题就会得到解决,因为我的应用程序是使用 Heroku 部署的。最后,我还使用了 express-cors 来避免 CORS 问题(不知道这是否与 cookie 问题有关)。我在 cors 中设置了 {credentials: true},在 Axios 中也设置了 {withCredentials: true}。
问问题
1189 次
3 回答
1
问题解决了!-> 添加 sameSite: 'none' Full Cookie config (express-session) 用于生产:
cookie: { httpOnly: true, secure: true, maxAge: 1000 * 60 * 60 * 48, sameSite: 'none' }
于 2021-01-19T01:08:21.517 回答
0
Heroku 使用反向代理。它提供 https 端点,然后将未加密的流量转发到网站。
尝试类似的东西
app.enable('trust proxy')
于 2021-01-18T01:38:56.273 回答
0
在会话配置中添加“名称”属性对我有用:
{
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: true,
proxy: true, // Required for Heroku & Digital Ocean (regarding X-Forwarded-For)
name: 'MyCoolWebAppCookieName', // This needs to be unique per-host.
cookie: {
secure: true, // required for cookies to work on HTTPS
httpOnly: false,
sameSite: 'none'
}
}
于 2022-01-15T18:48:49.773 回答