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

为何Node.js中req.headers可用但req.getHeaders()报错?

请求头获取方法报错的原因解析

现象复现

能正常运行的代码:

const http = require('http');
http.createServer((req, res) => {
  res.write(JSON.stringify(req.headers)); // req.headers ✔️
  res.end();
}).listen(3000);

无法运行的代码:

const http = require('http');
http.createServer((req, res) => {
  res.write(JSON.stringify(req.getHeaders())); // req.getHeaders() ❌
  res.end();
}).listen(3000);

运行后报错:

$ node script.js
<go to: http://localhost:3000/>
[...]
TypeError: req.getHeaders is not a function

但Node.js v18.x、v16.x文档的「message.headers」章节,有这样的示例代码:

console.log(request.getHeaders());

原因说明

核心问题是对象类型混淆:

  • 服务器端的req是IncomingMessage类的实例,代表客户端发来的请求,它仅通过headers属性暴露请求头,不存在getHeaders()方法。
  • 文档里的request.getHeaders(),这里的request指的是客户端发起请求时的ClientRequest对象(比如http.request()创建的对象),或是服务器端的ServerResponse对象(即代码里的res)——res.getHeaders()是用来查看当前要发送给客户端的响应头的方法。

总结:

  • 服务器端读取请求头:用req.headers
  • 服务器端查看待发送的响应头:用res.getHeaders()
  • 客户端查看自己要发送的请求头:用clientRequest.getHeaders()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:40:30