Javascript 如何从Node.js中的http请求中提取req.headers中的数据?

Javascript 如何从Node.js中的http请求中提取req.headers中的数据?,javascript,node.js,Javascript,Node.js,我正在使用node.js,试图从http req对象中提取“内容长度”。当Iconsole.log(请求头)时我不断得到以下信息,这不允许我直接访问所需的数据: 我需要这些数据,以便检查上传文件的大小。看起来这应该是一个简单的解决方案,但我被卡住了。谢谢你的帮助,谢谢 HTTP请求不一定在一条消息中发送。它们可以拆分为多条消息,通常头单独发送,没有正文,正文在以后的消息中发送。因此,你无法在第一个事件中阅读身体。你必须订阅 //req.headers = { { host

我正在使用node.js,试图从http req对象中提取“内容长度”。当I
console.log(请求头)时我不断得到以下信息,这不允许我直接访问所需的数据:


我需要这些数据,以便检查上传文件的大小。看起来这应该是一个简单的解决方案,但我被卡住了。谢谢你的帮助,谢谢

HTTP请求不一定在一条消息中发送。它们可以拆分为多条消息,通常头单独发送,没有正文,正文在以后的消息中发送。因此,你无法在第一个事件中阅读身体。你必须订阅

 //req.headers = {
    {
      host: 'localhost:5000',
      connection: 'keep-alive',
      'content-length': '702',
      'cache-control': 'max-age=0',
      'upgrade-insecure-requests': '1', 
      '...'}
通常,您会执行以下操作:

req.on('data', (data) => {
    // ...
});
如果要查找标题
“content-length”
,可以使用

req.setEncoding('utf8');
let message = '';
req.on('data', (d) => {
    message += d;
});
const promise = new Promise(resolve => {
    req.on('end', () => {
        resolve(message);
    }
}
console.log(await promise);

所以,
req.data['content-length']
不起作用?为什么req.data中有标题?它们不在
req.headers
中吗?
req.headers[“content length”]
您正在查找请求正文吗?您知道HTTP请求不一定在一条消息中发送吗?它们可以拆分为多条消息,通常头单独发送,没有正文,正文在以后的消息中发送。因此,你无法在第一个事件中阅读身体。你必须订阅
req.on('data',…)
“但是我被卡住了”没有多大帮助。你得到的是什么,什么时候?有错误信息吗?您能在MWE中提供一些代码吗?
console.log(请求标题['content-length'])
OP需要
content-length
标题值。@ibrahimmahrir OP已尝试
console.log(请求数据)。看起来OP试图获取请求主体。OP已经知道头数据在
req.headers
中。
req.headers['content-length']