You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用node-fetch设置Accept-Encoding:'gzip'时是否自动解压响应数据?

node-fetch gzip解压行为说明

结论先行

就算你手动在请求头配置了Accept-Encoding:'gzip',默认配置下node-fetch也不会自动对返回的gzip压缩响应做解压处理。

具体行为规则

  • 如果你需要自动处理gzip/deflate压缩响应,需要在请求配置中额外添加compress: true参数:
    • 开启该参数后,node-fetch会自动带上Accept-Encoding: gzip,deflate请求头,无需你手动配置
    • 服务端返回压缩响应后,node-fetch会自动完成解压,你直接调用res.text()、res.json()、res.buffer()等方法拿到的就是正常的未压缩数据
    • 如果你已经手动自定义了Accept-Encoding请求头,node-fetch不会覆盖你的配置,会按照你指定的编码格式处理对应的解压逻辑
  • 如果你没有开启compress: true,仅手动添加了Accept-Encoding: 'gzip'请求头,返回的响应流就是压缩后的二进制内容,直接读取会得到乱码,需要你手动引入zlib模块完成解压操作。

示例:开启自动解压的请求写法

const fetch = require('node-fetch');

const getRes = async () => {
  const response = await fetch('https://example.com/api', {
    method: 'GET',
    compress: true // 开启gzip/deflate自动解压
  });
  const result = await response.json(); // 直接获取解压后的数据
  console.log(result);
}

内容的提问来源于stack exchange,提问作者Muhammad Ali Nazar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:36:04