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

使用域名:Port调用Axios返回乱码,IP:Port正常的问题排查

Axios请求域名返回乱码、IP正常的解决方法

问题场景

在Node.js应用中使用Axios发送GET请求时,出现以下异常:

  • 用域名+端口访问(如http://my-domain:2095/server/get-status)返回乱码(预期为JSON格式)
  • 直接用IP+端口访问时响应正常
  • 浏览器和Postman访问域名地址能得到正常JSON响应

请求代码:

axios.get(`http://my-domain:2095/server/get-status`)
.then(result => { console.log(result.data) });

返回的乱码示例:

\x1F�\b\x00\x00\x00\x00\x00\x00\x03tα\x0E� \x14\x05�\x7F�3\x03/
��\f��8���\x12�\x04i\x17¿�j��g8\x15{Z%Ep�*��(9�\r<U�\x02\x06\r�x\x07���\��E0�^[OD�j��U�\x7F���r�)���mV�a�\x1D<�M�\x15R\x19���xc�\x04\x00\x00��\x03\x00\x02d&��\x00\x00\x00

原因分析

乱码开头的\x1F是Gzip压缩的标识,说明服务器返回了Gzip压缩的数据,但Axios在Node.js环境下未自动完成解压。

域名和IP访问的差异,大概率是因为域名指向的前端代理(如Nginx)开启了Gzip压缩,而直接访问IP的后端服务未启用压缩;或者Axios请求域名时,请求头未携带Accept-Encoding字段,导致服务器默认返回压缩数据——而浏览器和Postman会自动发送该请求头并处理解压逻辑。

解决方法

方法一:强制服务器返回未压缩数据

在请求头中添加Accept-Encoding: identity,明确告诉服务器返回原始未压缩的内容:

axios.get(`http://my-domain:2095/server/get-status`, {
  headers: {
    'Accept-Encoding': 'identity'
  }
})
.then(result => { console.log(result.data) });

方法二:让Axios自动处理Gzip解压

Node.js环境下可通过两种方式实现自动解压:

  1. 手动借助zlib模块处理
const zlib = require('zlib');
const axios = require('axios');

axios.get(`http://my-domain:2095/server/get-status`, {
  responseType: 'arraybuffer', // 先获取二进制原始数据
  transformResponse: [function (data) {
    // 根据响应头判断是否需要解压
    const contentEncoding = this.headers['content-encoding'];
    if (contentEncoding && contentEncoding.includes('gzip')) {
      return zlib.gunzipSync(data).toString();
    }
    return data.toString();
  }]
})
.then(result => { console.log(JSON.parse(result.data)) });
  1. 开启Axios内置的解压配置
    Axios 0.21.0+版本支持直接开启decompress配置(Node.js环境默认已开启,手动指定可避免场景化失效):
axios.get(`http://my-domain:2095/server/get-status`, {
  decompress: true
})
.then(result => { console.log(result.data) });

内容的提问来源于stack exchange,提问作者Soroush Bgm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:20:32