[英]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告訴它。
如果需要響應主體的大小,請偵聽res
的data
事件,並將接收到的緩沖區的大小添加到計數器變量中。 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.