node.js流gzip http响应

时间:2013-07-29 23:09:40

标签: node.js stream gzip

我正在尝试使用gzip以块的形式发送响应,但是从以下示例中我在Chrome中获得“Hello S / I m S k ”而不是“Hello World!”

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/');

1 个答案:

答案 0 :(得分:2)

这不是分块传输编码的意思。

请参阅description in the HTTP standard。简而言之,chunked编码包含具有ASCII十六进制块长度的块,后跟CRLF,然后是那么多字节,然后是另一个CRLF。重复,以零长度块和另一个CRLF结束,以便在零长度块CRLF之后进行良好测量。