Nestjs环境下GraphQL登录Mutation返回Set-Cookie头但Cookie未设置问题
问题根因
Set-Cookie不生效由两个配置问题共同导致:
- GraphQL Playground的凭证请求配置错误
你提供的Playground配置中request.credentials参数值为omit,该配置控制Playground发起请求时的凭证处理逻辑,设为omit时浏览器会主动忽略响应返回的Set-Cookie头,不会存储对应Cookie。 - CORS配置与当前测试场景不匹配
你当前在http://localhost:3000的GraphQL Playground中发起测试,但App Module中配置的CORS允许来源仅包含生产域名和http://localhost:4000,跨域规则不匹配也会导致Cookie存储被拦截。
修复步骤
- 调整GraphQL Playground配置:将配置项
"request.credentials": "omit"修改为"request.credentials": "include",修改后重启服务重新发起login请求即可触发Cookie存储。 - 调整开发环境CORS规则:将App Module中CORS的origin配置补充
http://localhost:3000,或者开发阶段临时设置为true允许所有来源,避免跨域拦截。 - 后续前端开发注意事项:前端部署在
http://localhost:4000后,发起GraphQL请求时需要主动开启凭证配置,如使用fetch请求则添加credentials: 'include'参数,使用Apollo Client则在实例化时配置credentials: 'include',否则前端同样会出现无法存储Cookie的问题。
内容的提问来源于stack exchange,提问作者Herbie Vine
相关产品推荐
相关产品推荐

