强制Web服务器返回未压缩的数据(No gzip)

时间:2013-12-12 07:26:11

标签: node.js http-headers gzip compression

我正在使用 http node.js 模块发出http请求。我想强制Web服务器返回未压缩的数据。 [没有gzip,没有收缩]

请求标题

headers: {
  'Accept-Encoding': 'gzip,deflate,sdch',
  'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/31.0.1650.57 Chrome/31.0.1650.57 Safari/537.36',
}

我尝试使用此'Accept-Encoding': '*;q=1,gzip=0',但没有运气。

我看到两种方法:

  1. 强制网络服务器返回未压缩的数据。
  2. 使用某个nodeJs模块解压缩压缩数据
  3. 我想去#1。

1 个答案:

答案 0 :(得分:3)

如果您正在向外部服务器发出无法控制的http请求,并且它没有对Accept-Encoding请求标头作出反应,那么您必须处理压缩响应并在以后解压缩。我建议你使用zlib模块。这是一个例子:

var zlib = require('zlib');

//...

request.on('response', function(response){
  var contentEncoding = response.headers['content-encoding'];

  response.on('data', function(data){
    switch(contentEncoding){
      case 'gzip':
        zlib.gunzip(data, function(error, body){
          if(error){
            //Handle error
          } else {
            //Handle decompressed response body
          }
        });
        break;
      case 'deflate':
        zlib.inflate(data, function(error, body){
          if(error){
            //Handle error
          } else {
            //Handle decompressed response body
          }
        });
        break;
      default:
        //Handle response body
        break;
     }
  });
});