NodeJS中request.Cookie始终返回undefined的问题排查求助
问题原因与解决方案
嘿,我一下子就找到问题的根源啦!你的代码里犯了几个关键小错误,导致request.Cookie一直返回undefined:
1. 大小写与属性名错误
你在代码里访问的是request.Cookie,但express配合cookie-parser中间件解析后,Cookie数据是存在request.cookies(小写c,复数形式)里的:
request.headers.cookie是原始的请求头字符串(比如name=test; token=123)- 经过
cookie-parser处理后,会把这个字符串解析成键值对的对象,存到request.cookies里(比如{ name: 'test', token: '123' })
所以你把所有的request.Cookie改成request.cookies就能看到正确的Cookie数据了。
2. 额外的代码坑(顺便帮你修正)
你的路由代码里还有两个小问题,会导致后续报错:
request_url变量没有定义,应该是你要转发的目标URL加上当前请求的路径- 如果需要把前端传来的Cookie转发给后端服务,axios不会自动携带
request.cookies,需要手动构造Cookie请求头
修正后的完整路由代码如下:
var express = require('express') const router = express.Router(); const axios = require('axios'); const url = 'http://10.10.0.145:80/api' router.use(express.json()); router.get('/*', function (request, response) { // 打印解析后的Cookie对象 console.log('Received cookies:', request.cookies); // 构造要转发的完整URL const request_url = `${url}${request.path}`; // 手动构造Cookie请求头,转发给后端服务 const cookieHeader = Object.entries(request.cookies) .map(([key, value]) => `${key}=${value}`) .join('; '); axios .get(request_url, { headers: { Cookie: cookieHeader } }) .then(res => { console.log('Forwarded cookies successfully'); // 把后端响应返回给前端 response.send(res.data); }) .catch(error => { console.error('Error forwarding request:', error); // 给前端返回错误信息 response.status(500).send('Request failed: ' + error.message); }) }); module.exports = router; // 别忘了导出路由!
验证步骤
- 先在Postman里确认你确实发送了Cookie(可以在请求头面板看到
Cookie字段) - 启动服务后,访问
localhost:8080/api/xxx,查看控制台打印的request.cookies,应该能看到你设置的Cookie键值对了
内容的提问来源于stack exchange,提问作者raffaeledp98
相关产品推荐
相关产品推荐

