Axios 1.2.0+调用Auth0获取令牌返回乱码及Z_BUF_ERROR问题求助
Axios 1.2.0+调用Auth0令牌接口出现乱码及Z_BUF_ERROR的解决方案
这个问题在Axios社区已有不少用户反馈,属于版本升级后自动解压逻辑的兼容性问题。
问题原因
Axios从1.2.0版本开始默认启用了decompress: true配置,自动尝试解压服务器返回的压缩响应(如gzip、brotli)。但Auth0的令牌接口响应压缩处理与Axios的新解压逻辑存在兼容问题,导致解压失败,出现乱码数据和Z_BUF_ERROR错误。而7timer.info等公开API的压缩响应格式与Axios新逻辑兼容,所以能正常处理。
解决方法
1. 显式禁用自动解压
修改请求配置,添加decompress: false,让Axios直接返回原始响应数据:
const { data, status, statusText } = await axios.post('https://your-auth0-domain/oauth/token', body, { headers: { "content-type": "application/x-www-form-urlencoded" }, decompress: false });
如果需要处理压缩数据,可以手动使用zlib模块解压原始buffer数据。
2. 要求服务器返回未压缩数据
在请求头中添加Accept-Encoding: identity,告知Auth0服务器不要返回压缩格式的响应:
const { data, status, statusText } = await axios.post('https://your-auth0-domain/oauth/token', body, { headers: { "content-type": "application/x-www-form-urlencoded", "Accept-Encoding": "identity" } });
3. 临时降级Axios版本
如果暂时不想修改代码,可以降级到1.1.3版本恢复正常:
npm install axios@1.1.3
内容的提问来源于stack exchange,提问作者Walter
相关产品推荐
相关产品推荐

