使用Axios下载图片遇maxContentLength超限错误,设置参数无效求助
解决Axios下载图片触发maxContentLength报错的问题
问题
使用Axios从网站下载图片时反复触发错误,已设置maxContentLength参数但问题仍未解决。
代码片段
const resp = await axios({ method: 'GET', url: `${host}/data/${chapterHash}/${page}`, maxContentLength: 20000, responseType: 'arraybuffer' })
报错信息
const err = new AxiosError( ^ AxiosError: maxContentLength size of -1 exceeded at IncomingMessage.handlerStreamAborted (C:\Users\alexou\Documents\node-reader\node_modules\axios\dist\node\axios.cjs:2912:23) at IncomingMessage.emit (node:events:513:28) at IncomingMessage._destroy (node:_http_incoming:224:10) at _destroy (node:internal/streams/destroy:102:25) at IncomingMessage.destroy (node:internal/streams/destroy:64:5) at TLSSocket.socketCloseListener (node:_http_client:441:11) at TLSSocket.emit (node:events:525:35) at node:net:757:14 at TCP.done (node:_tls_wrap:584:7) { code: 'ERR_BAD_RESPONSE'
解决方法
- 报错根源:服务器返回的响应中缺少
Content-Length响应头,Axios无法识别预期的响应大小,此时单独设置maxContentLength无法解决问题。 - 参数调整:需要同时配置
maxContentLength和maxBodyLength两个参数,若不需要限制响应大小,可直接设为Infinity:
const resp = await axios({ method: 'GET', url: `${host}/data/${chapterHash}/${page}`, maxContentLength: Infinity, maxBodyLength: Infinity, responseType: 'arraybuffer' })
- 额外排查点:
- 验证目标图片URL是否能正常访问,返回的是否为有效图片数据。
- 若网站存在反爬机制,可添加模拟浏览器的请求头:
headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' }
内容的提问来源于stack exchange,提问作者alexou
相关产品推荐
相关产品推荐

