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

如何通过JavaScript Fetch Post向Node.js传递Cookie值

解决Fetch Post传Cookie时Node.js端req.body为空的问题

1. 先确认:你是不是混淆了Cookie的传递方式?

Cookie默认是通过请求头传递的,不是放在req.body里。如果你的需求是获取客户端的Cookie,直接读req.cookies即可,但需要先配置cookie-parser中间件:

const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();

app.use(cookieParser());

app.post('/your-api', (req, res) => {
  console.log('客户端Cookie:', req.cookies); // 这里拿到Cookie内容
});

同时前端Fetch要带上credentials参数,确保Cookie被发送:

fetch('/your-api', {
  method: 'POST',
  credentials: 'include' // 关键:允许携带跨域Cookie(同域也建议加上)
});

2. 如果确实要把Cookie放到请求体里发送

那得检查以下两点:

(1)Node.js端没配置请求体解析中间件

Express默认不解析JSON/表单格式的请求体,必须手动添加:

// 解析JSON格式的请求体
app.use(express.json());
// 如果是表单格式(x-www-form-urlencoded),再加这个
app.use(express.urlencoded({ extended: true }));

(2)前端Fetch请求格式错误

要正确设置Content-Type,并把body转成对应格式的字符串:

fetch('/your-api', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json', // 对应后端的express.json()
  },
  credentials: 'include',
  body: JSON.stringify({
    cookieValue: document.cookie // 把Cookie包装成JSON对象发送
  })
});

此时后端就能通过req.body.cookieValue拿到你传的Cookie字符串。

3. 跨域场景额外注意

如果前后端是跨域的,服务器要配置CORS允许携带凭证,且不能用*作为允许的源:

const cors = require('cors');
app.use(cors({
  origin: 'http://你的前端域名.com', // 必须是具体域名
  credentials: true
}));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:15:40