为何使用Node.js Express无法设置Cookie?
问题原因及解决方案
为什么打印req.cookies.nhsnum会得到undefined
req.cookies存放的是客户端在当前请求中发送给服务器的Cookie数据,而你通过res.cookie()设置的Cookie是服务器准备返回给客户端的响应头内容,此时这个Cookie还没被客户端接收,更不会被携带回当前请求里,所以当前请求的req.cookies中自然找不到这个新设置的Cookie。
验证与修正方法
确认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配置获取新设置的Cookie的时机
只有当客户端接收到服务器的响应后,会把这个Cookie存储起来,在下一次向服务器发起请求时,客户端会自动携带这个Cookie,此时服务器的req.cookies.nhsnum才能获取到对应的值。
额外注意事项
- 确保客户端浏览器没有禁用Cookie,否则无法存储和携带Cookie。
- 如果是跨域请求场景,需要额外配置Cookie的
sameSite、domain等参数,保证客户端能正常接收并携带Cookie。
内容的提问来源于stack exchange,提问作者Xiaohan Su
相关产品推荐
相关产品推荐

