使用npm库cookie-session在cookie中存储session数据不生效如何解决
问题根因
你遇到的session写入失效问题是配置和请求链路的常见兼容问题,核心是Cookie下发条件不满足、中间件配置冗余两个原因导致的。
修复步骤
- 移除冗余的
cookieParser中间件,cookie-session自身已实现Cookie解析能力,重复挂载会导致解析冲突 - 将
cookie.secure配置改为'auto',适配「ngrok HTTPS终止、后端服务跑在HTTP」的代理场景,自动识别请求协议判断是否下发安全Cookie - 确认前端跨域请求开启凭证携带:
- Fetch请求需配置
credentials: 'include' - Axios请求需配置
withCredentials: true
- Fetch请求需配置
- 确认ngrok链路没有自定义过滤Cookie头的规则,默认ngrok会正常透传Cookie无需额外配置
修正后的配置代码
app.use(cors({ origin: true, credentials: true })); app.set('trust proxy', true); app.use(cookieSession({ keys: ['veryimportantsecret'], name: "session", cookie: { httpOnly: true, sameSite: 'none', secure: 'auto' } })) app.use(function (req, res, next) { console.log('req.session.testing', req.session.testing) req.session.testing = (req.session.testing || 1) + 1; next(); });
验证方法
修改后先看第一次请求的响应头里是否有Set-Cookie字段,携带你配置的session名的Cookie值,后续请求的请求头里是否带上了该Cookie,若都存在则session计数会正常累加。
内容的提问来源于stack exchange,提问作者David DeStefano
相关产品推荐
相关产品推荐

