Express-Session在Heroku生产环境无痕模式下失效问题求助
Heroku生产环境下express-session无痕模式失效问题
我使用express-session处理用户会话,部署在Heroku生产环境后,无痕模式下该功能完全失效,但本地环境中常规模式和无痕模式均能正常运行。
本地环境运行正常的代码:
app.use( session({ secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: false, store: store, cookie: { maxAge: 1000 * 60 * 60 * 100, }, }) );
部署到生产环境后,上述代码无法设置Cookie,于是改用以下代码——该代码能在常规模式下正常设置Cookie,但无痕模式依然失效:
app.use( session({ store: store, secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: true, proxy: true, cookie: { secure: true, maxAge: 1000 * 60 * 60 * 48, sameSite: "none", } }) );
经过数小时排查,问题根源在于Heroku的跨域Cookie处理逻辑:前端部署在第三方域名(如netlify平台),向后端Heroku域名请求API时,Heroku发送的第三方Cookie会被无痕模式自动拦截。只有当用户在无痕模式下手动允许第三方Cookie,会话功能才能正常工作。
内容的提问来源于stack exchange,提问作者Prins Ocampo
相关产品推荐
相关产品推荐

