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

Node.js服务器如何在POST请求中读取请求头?

Node.js HTTP服务器无法读取纯数字键名请求头的解决办法

问题场景

服务器代码:

const http = require('http');
const port = 3000; // 假设使用3000端口

http.createServer(function(req, res){
  var method = req.method;
  switch(method)
  {
    case 'POST':      
      var header1 = req.headers['1'];
      console.log('header1 : '+ header1);
      res.end(); // 补充响应结束逻辑,避免请求挂起
      break;
  }
}).listen(port, function(){  
  console.log(`Server listening on port ${port}`);
});

使用PostMan发送POST请求,携带请求头:

key: value
1: 1

控制台输出header1 : undefined,需要正确获取到header1 : 1的结果。

原因

纯数字的请求头键名属于非常规命名,不符合HTTP头字段的常规使用习惯,部分HTTP客户端(如PostMan)或Node.js的http模块解析逻辑会对这类字段做过滤或忽略处理,导致无法读取。

解决方案

方案1:使用符合规范的请求头命名(推荐)

遵循HTTP头字段的常规命名方式,改用字母开头、带连字符的自定义头(如X-Header-1):

  • PostMan中设置请求头:X-Header-1: 1
  • 服务器代码修改为:
    var header1 = req.headers['x-header-1']; // Node.js会自动将头名转为小写
    

方案2:验证请求是否正确发送(针对纯数字头)

如果必须使用纯数字键名,先确认请求是否被正确传递:

  • 用curl命令替代PostMan测试,确保头字段被正常发送:
    curl -X POST -H "1: 1" http://localhost:3000
    
    如果curl测试能输出header1 : 1,说明是PostMan的设置问题(部分版本会过滤非常规头字段),需检查PostMan的头字段配置;如果curl也无法获取,说明当前Node.js环境对纯数字头字段有解析限制,建议改用方案1。

内容的提问来源于stack exchange,提问作者sungchul.seo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:24:11