【问题标题】:Force webserver to return uncompressed data (No gzip) [duplicate]强制网络服务器返回未压缩的数据(无 gzip)[重复]
【发布时间】:2013-12-12 07:26:11
【问题描述】:

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

请求标头

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模块解压压缩数据

我想去#1。

【问题讨论】:

    标签: node.js http-headers gzip compression


    【解决方案1】:

    如果您向无法控制的外部服务器发出 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;
         }
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多