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

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; // 别忘了导出路由!

验证步骤

  1. 先在Postman里确认你确实发送了Cookie(可以在请求头面板看到Cookie字段)
  2. 启动服务后,访问localhost:8080/api/xxx,查看控制台打印的request.cookies,应该能看到你设置的Cookie键值对了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:52:39