Linux环境下载文件返回403错误,Windows环境正常,求排查方案
问题:Linux环境下Axios下载文件返回403 Forbidden,Windows环境正常
我用以下Axios代码实现文件下载功能:
import * as fs from "fs"; import axios from "axios"; export async function downloadFile(url: string, destPath: string) { const writer = fs.createWriteStream(destPath); const response = await axios({ url: url, method: "GET", responseType: "stream", // 曾需配置httpsAgent,现在无论是否配置均失效 //httpsAgent: new https.Agent({ // rejectUnauthorized: false, //}), }); response.data.pipe(writer); return new Promise((resolve, reject) => { writer.on("finish", resolve); writer.on("error", reject); }); }
这段代码在Windows 10机器上运行正常,但在生产Linux机器上返回403错误,用wget、curl下载同样失败,示例如下:
root@le-machine [~]# wget https://boletoonline.caixa.gov.br/ecobranca/SIGCB/imprimir/1150229/14000000139489640 --2022-10-06 15:48:23-- https://boletoonline.caixa.gov.br/ecobranca/SIGCB/imprimir/1150229/14000000139489640 Resolving boletoonline.caixa.gov.br (boletoonline.caixa.gov.br)... 206.41.74.19 Connecting to boletoonline.caixa.gov.br (boletoonline.caixa.gov.br)|206.41.74.19|:443... connected. HTTP request sent, awaiting response... 403 Forbidden 2022-10-06 15:48:27 ERROR 403: Forbidden.
该功能之前一直正常,某天突然失效。
已尝试的操作
- 添加模拟浏览器的请求头,无效果
- 曾配置
httpsAgent关闭证书验证,目前无论是否配置该参数均失效
我怀疑问题出在SSL、TLS或证书相关环节,但无法确定具体原因。
补充:Axios返回的错误响应头及请求头
response: { status: 403, statusText: 'Forbidden', headers: { server: 'azion webserver', date: 'Fri, 07 Oct 2022 04:23:41 GMT', 'content-type': 'text/html', 'transfer-encoding': 'chunked', connection: 'close' }, ... request: <ref *1> ClientRequest { _events: [Object: null prototype], _eventsCount: 7, _maxListeners: undefined, outputData: [], outputSize: 0, writable: true, destroyed: false, _last: true, chunkedEncoding: false, shouldKeepAlive: false, maxRequestsOnConnectionReached: false, _defaultKeepAlive: true, useChunkedEncodingByDefault: false, sendDate: false, _removedConnection: false, _removedContLen: false, _removedTE: false, _contentLength: 0, _hasBody: true, _trailer: '', finished: true, _headerSent: true, _closed: false, socket: [TLSSocket], _header: 'GET /ecobranca/SIGCB/imprimir/1150229/14000000138314020 HTTP/1.1\r\n' + 'Accept: application/json, text/plain, */*\r\n' + 'User-Agent: axios/0.27.2\r\n' + 'Host: boletoonline.caixa.gov.br\r\n' + 'Connection: close\r\n' + '\r\n',
内容的提问来源于stack exchange,提问作者Lucas Steffen
相关产品推荐
相关产品推荐

