Javascript 在node.js中,如何获取内容长度头以响应http.get()?

Javascript 在node.js中,如何获取内容长度头以响应http.get()?,javascript,node.js,Javascript,Node.js,我有下面的脚本,节点似乎没有在响应对象中包含Content-Length头。在使用数据之前,我需要知道数据的长度,因为数据可能非常大,所以我宁愿不缓冲它 http.get('http://www.google.com', function(res){ console.log(res.headers['content-length']); // DOESN'T EXIST }); 我已经浏览了所有的对象树,没有看到任何东西。所有其他标题都在“标题”字段中 有什么想法吗?不是每台

我有下面的脚本,节点似乎没有在响应对象中包含Content-Length头。在使用数据之前,我需要知道数据的长度,因为数据可能非常大,所以我宁愿不缓冲它

http.get('http://www.google.com', function(res){    

    console.log(res.headers['content-length']); // DOESN'T EXIST
});
我已经浏览了所有的对象树,没有看到任何东西。所有其他标题都在“标题”字段中


有什么想法吗?

不是每台服务器都会发送
内容长度
标题

例如:

http.get('http://www.google.com', function(res) {
    console.log(res.headers['content-length']); // undefined
});
但如果你要求这样做:

http.get('http://stackoverflow.com/', function(res) {
    console.log(res.headers['content-length']); // 1192916
});

您正确地从响应中提取了标题,google只是不在其主页上发送标题(他们使用分块编码)。

www.google.com不发送
内容长度。它使用,您可以通过
传输编码:chunked
头来判断

如果需要响应正文的大小,请收听
res
data
事件,并将接收到的缓冲区大小添加到计数器变量中。当
end
激发时,您拥有最终大小


如果您担心响应过大,请在计数器超过多少字节后中止请求。

删除一个for(var k in res.headers){console.log(k,res.headers[k]);}以查看报头中可用的所有键。可能是大写。谢谢,但我已经检查了对象树,看到了除内容长度标题之外的所有内容。@CharlieKey-Ouch。我正在使用fiddler检查响应,但没有意识到fiddler正在添加标题。@迈克:是的,如果fiddler未处于流模式,它将在内部缓冲整个响应,然后将
内容长度
标题发送到浏览器。单击工具栏中的“流”按钮,Fiddler将不会执行此操作。