You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js使用express-session时服务端会话正常但浏览器无cookie问题

可能的原因及对应解决方法

  • 你找错了cookie的存储位置或者名称
    express-session默认的会话cookie名称是connect.sid,你代码里注释掉了自定义名称name: 'qid',所以不会出现名为qid的cookie。你可以先打开浏览器开发者工具的「网络」面板,找到/products请求的响应头,查看有没有Set-Cookie字段:
    • 如果存在Set-Cookie: connect.sid=xxx的内容,说明cookie已经正常下发,你只需要在cookie存储面板选中localhost:4000对应的站点,就能找到这个cookie。
    • httpOnly属性只会阻止前端JS读取cookie,不会影响浏览器存储和显示这个cookie,所以和你注释掉httpOnly: true的操作无关,该配置默认值就是true。
  • 你是跨域调用接口导致cookie无法下发
    如果你的前端页面跑在其他端口(比如常见的3000、5173端口),属于跨域请求,默认不会接收服务端的Set-Cookie头,需要额外配置:
    1. 服务端添加CORS配置,开启credentials支持,且允许的源不能为通配符*,要写前端的具体地址:
    const cors = require('cors')
    app.use(cors({
      origin: 'http://localhost:3000', // 替换成你的前端实际地址
      credentials: true
    }))
    
    1. 前端请求时携带凭证,axios示例:
    axios.get('http://localhost:4000/products', { withCredentials: true })
    
    fetch示例:
    fetch('http://localhost:4000/products', { credentials: 'include' })
    
  • 浏览器隐私设置阻止了cookie写入
    如果你用的是隐私模式、或者开启了第三方cookie拦截,也可能出现cookie下发成功但不存储的情况,可以换普通模式或者其他浏览器测试验证。

内容的提问来源于stack exchange,提问作者Kai021195

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:57:01