2013-07-29 3 views
1

gzip으로 응답을 보내려고하고 있지만 다음 예에서 Chrome에 "Hello S/I m S k getting"가 표시됩니다. 대신 "Hello World!"node.js 스트리밍 gzip http 응답

var http = require('http'), 
    zlib = require('zlib'); 

http.createServer(function(req, res) { 
    res.writeHead(200, { 
     'Content-Type': 'html/text', 
     'Transfer-Encoding': 'chunked', 
     'Content-Encoding': 'gzip', 
     'Content-Type': 'text/html;charset=UTF-8' 
    }); 

    zlib.gzip("Hello", function(_, result) { 
     res.write(result); 
    }); 

    zlib.gzip(" World", function(_, result) { 
     res.write(result); 
    }); 

    zlib.gzip('!', function(_, result) { 
     res.end(result); 
    }); 

}).listen(1337, '127.0.0.1'); 

console.log('Server running at http://127.0.0.1:1337/'); 

답변

2

이것은 청크 분할 전송 인코딩의 의미가 아닙니다.

description in the HTTP standard을 참조하십시오. 짧은 chunked 인코딩은 ASCII 16 진수 청크 길이 다음에 CRLF가있는 청크로 구성되며, 그 다음에 많은 바이트가 이어지고 다른 CRLF로 구성됩니다. 0 길이의 청크 CRLF 다음에 양호한 측정을 위해 길이가 0 인 청크와 다른 CRLF로 끝내십시오.

+0

감사하지만, 내가 설명한 문제와 어떻게 관련이 있는지 확실하지 않습니다. 더 자세한 정보를 제공해 주시겠습니까? –

+0

당신은 다음에 청크 인코딩이있을 것이라고 말하면서 HTTP 클라이언트에 거짓말을하고 있지만 그렇게하지는 않습니다. 표준에 따라 HTTP 스트림을 구성하지 않으면 좋은 결과를 기대할 수 없습니다. –