簡體   English   中英

在node.js中,如何獲取Content-Length頭以響應http.get()?

[英]In node.js, how do I get the Content-Length header in response to http.get()?

我有以下腳本,似乎節點不包括響應對象中的Content-Length標頭。 我需要知道消耗數據之前的長度,因為數據可能非常大,我寧願不緩沖它。

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

    console.log(res.headers['content-length']); // DOESN'T EXIST
});

我已經遍布對象樹,沒有看到任何東西。 所有其他標題都在“標題”字段中。

有任何想法嗎?

www.google.com不發送Content-Length 它使用分塊編碼 ,您可以通過Transfer-Encoding: chunked header告訴它。

如果需要響應主體的大小,請偵聽resdata事件,並將接收到的緩沖區的大小添加到計數器變量中。 end射擊時,你有最終的大小。

如果你擔心大的響應,一旦你的計數器高於多少字節,就會中止請求。

並非每個服務器都會發送content-length標頭。

例如:

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

但是如果你要求SO:

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

你正確地從響應中提取了這個標題,谷歌只是不在他們的主頁上發送它(他們使用分塊編碼代替)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM