相关疑难解决方法(0)

我如何ungzip(解压缩)NodeJS请求的模块gzip响应体?

如何在请求的模块响应中解压缩gzipped主体?

我在网上尝试了几个例子,但似乎都没有.

request(url, function(err, response, body) {
    if(err) {
        handleError(err)
    } else {
        if(response.headers['content-encoding'] == 'gzip') {    
            // How can I unzip the gzipped string body variable?
            // For instance, this url:
            // http://highsnobiety.com/2012/08/25/norse-projects-fall-2012-lookbook/
            // Throws error:
            // { [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' }
            // Yet, browser displays page fine and debugger shows its gzipped
            // And unzipped by browser fine...
            if(response.headers['content-encoding'] && response.headers['content-encoding'].toLowerCase().indexOf('gzip') > -1) {   
                var body = response.body;                    
                zlib.gunzip(response.body, function(error, data) {
                    if(!error) …
Run Code Online (Sandbox Code Playgroud)

javascript zlib node.js express

63
推荐指数
6
解决办法
6万
查看次数

如何在快递中压缩 POST 请求数据?

我正在尝试构建一个可以使用 express 接受 gzipped POST 数据的服务器。我想我可以编写自己的中间件来将请求流通过管道传输到 zlib.createGunzip() 流。问题是,我怎样才能做到这一点,之后 express.bodyParser() 中间件仍然能够解析我压缩的 POST 数据?

我试图用 zlib 流的方法替换原始请求流方法,但这只会使 bodyParser 返回“错误请求”错误:

var express = require('express');
var app = express();

function gUnzip(req, res, next) {
  var newReq;
  if (req.headers['content-encoding'] === 'gzip') {
    console.log("received gzipped body");
    newReq = req.pipe(zlib.createGunzip());
    Object.getOwnPropertyNames(newReq).forEach(function (p) {
      req[p] = newReq[p];
    });
  }
  next();
}

app.use(gUnzip);
app.use(express.bodyParser());

app.listen(8080);
Run Code Online (Sandbox Code Playgroud)

有没有办法在我自己的中间件中不重写 bodyParser() 中间件的情况下完成这项工作?

编辑:这是同一个问题:使用 node + express 解压缩 POST body。但在答案中,他只是在自己的中间件中完成了 express.bodyParser() 应该做的事情,这是我想要避免的。我正在寻找一种方法来简单地从流中解压缩请求数据,然后将其传递给 bodyParser(),它需要一个流本身,如http://www.senchalabs.org/connect/json 所示。 HTML

gzip node.js express

5
推荐指数
1
解决办法
4404
查看次数

标签 统计

express ×2

node.js ×2

gzip ×1

javascript ×1

zlib ×1