apollo-server-express项目Apollo Studio explorer浏览器未设置cookie问题
- 本地开发环境secure配置冲突
你当前Cookie配置中secure: true,该属性要求浏览器仅在HTTPS协议下才会存储对应Cookie。如果本地开发使用HTTP协议启动服务,浏览器会直接忽略响应中的Set-Cookie头,不会生成对应Cookie。
修复方案:按环境区分配置,开发环境关闭secure,生产环境开启:
cookie: { maxAge: 1000 * 60 * 10, httpOnly: false, secure: process.env.NODE_ENV === "production", sameSite: process.env.NODE_ENV === "production" ? "none" : "lax", }
注意:sameSite: "none"必须配合secure: true使用,否则浏览器同样会拒收Cookie。
Apollo Studio未开启凭据发送开关
需要手动在Apollo Studio的Explorer设置页打开Include credentials选项,否则跨域请求不会携带凭据,响应的Set-Cookie也不会被浏览器接收。Redis客户端未完成初始化连接
如果你使用的是redis@4.x+connect-redis@6.x版本组合,redis.createClient()创建实例后需要手动调用connect()方法完成连接,否则Session存储逻辑异常,不会触发Set-Cookie下发:
const redisClient = redis.createClient({ host: "127.0.0.1", port: 6379, }); // 新增连接调用 await redisClient.connect()
Session未修改不会下发Set-Cookie
你配置了saveUninitialized: false,未被修改过的全新Session不会被持久化,也不会下发Set-Cookie头。需要在业务逻辑中对req.session做赋值操作(例如req.session.userId = 1),才会触发Set-Cookie返回给浏览器。浏览器第三方Cookie拦截限制
Apollo Studio站点下发的本地服务Cookie属于第三方Cookie,如果你的浏览器开启了第三方Cookie拦截功能,即使配置正确也会被拦截,可临时关闭该限制验证。
内容的提问来源于stack exchange,提问作者Tedajo Philippe
相关产品推荐
相关产品推荐

