错误:Zlib._handle.onerror (zlib.js:355:17) 错误号:-3,代码:'Z_DATA_ERROR' 处的标头检查不正确

2024-04-22

我的 HTTP 请求有 {'content-encoding': "gzip"} 标头。我正在尝试使用node.js 读取数据。我使用下面的代码来解压缩数据。但我明白了错误:Zlib._handle.onerror (zlib.js:355:17) 错误号:-3,代码:'Z_DATA_ERROR' 处的标头检查不正确。有人可以帮我纠正这个错误吗?

var myHttp = require("http");
var url = require("url");
var qString = require("querystring");
var fs = require('fs');
var zlib = require('zlib'); 

var myEvents = require('./customEvents');

var myAppWebServer = myHttp.createServer(function(request, response){

    response.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
    response.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    response.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    response.setHeader('Access-Control-Allow-Credentials', true);
    response.setHeader('content-type', 'application/json');

    var body = "";

    request.on('data', function (chunk) {
        body += chunk;

    });

    request.on('end', function () {

        if(body){

          function getGzipped(url, callback) {

            var buffer = [];

            myHttp.get(url, function(response) {

                var gunzip = zlib.createGunzip(); 

                response.pipe(gunzip);

                gunzip.on('data', function(data) {

                    buffer.push(data.toString());

                }).on("end", function() {

                    callback(null, buffer.join("")); 

                }).on("error", function(e) {

                    callback(e);

                })
            }).on('error', function(e) {
                callback(e)
            });
        }

        getGzipped(url, function(err, data) {
               console.log(err);
            });
        }

      });


    response.end('{ "links" :"http://localhost:8080/users" }');

});

myAppWebServer.listen(8080);

我在尝试从客户端 POST 时看到同样的错误。如果发送方在数据缓冲区上使用 zlib,则编码和标头将为“zlib”而不是“gzip”。

我将“Content-Encoding”从“gzip”更改为“deflate”(又名 zlib;请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding了解详情)。

服务器开始接受我的帖子。所以你的问题可能是在发送端而不是解码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:Zlib._handle.onerror (zlib.js:355:17) 错误号:-3,代码:'Z_DATA_ERROR' 处的标头检查不正确 的相关文章

随机推荐