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

为何使用Node.js Express无法设置Cookie?

问题原因及解决方案

为什么打印req.cookies.nhsnum会得到undefined

req.cookies存放的是客户端在当前请求中发送给服务器的Cookie数据,而你通过res.cookie()设置的Cookie是服务器准备返回给客户端的响应头内容,此时这个Cookie还没被客户端接收,更不会被携带回当前请求里,所以当前请求的req.cookies中自然找不到这个新设置的Cookie。

验证与修正方法

  1. 确认Cookie是否成功生成
    如果你想验证服务器是否正确设置了Cookie,可以打印响应头中的Set-Cookie字段,这里会包含你刚设置的Cookie信息:

    res.cookie("nhsnum", nhs_num, {
        expires: new Date(Date.now() + 1000 * 60 * 5),
        httpOnly: true
    });
    console.log(res.get('Set-Cookie')); // 输出包含nhsnum的Cookie配置
    
  2. 获取新设置的Cookie的时机
    只有当客户端接收到服务器的响应后,会把这个Cookie存储起来,在下一次向服务器发起请求时,客户端会自动携带这个Cookie,此时服务器的req.cookies.nhsnum才能获取到对应的值。

额外注意事项

  • 确保客户端浏览器没有禁用Cookie,否则无法存储和携带Cookie。
  • 如果是跨域请求场景,需要额外配置Cookie的sameSite、domain等参数,保证客户端能正常接收并携带Cookie。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:45:28