Axios配置代理时端口为5位以上导致请求URL异常如何解决?
问题根因
该异常由Axios v0.x版本的内置缺陷导致:其内部代理URL拼接逻辑的正则表达式仅支持匹配最长4位的端口号,当端口号位数≥5时,正则匹配失败,会错误丢弃目标请求的协议+域名前缀,仅保留路径部分。
修复方案
- 方案1:升级Axios版本
Axios v1.0及以上版本已修复该端口长度匹配问题,直接升级即可解决,无需修改原有业务配置。
升级命令:
# 升级到最新稳定版 npm install axios@latest # 或锁定指定稳定版本 npm install axios@1.6.8
- 方案2:低版本兼容处理
如果暂时无法升级Axios,可放弃使用内置proxy配置,手动构造完整代理请求路径:
await axios.get('https://hostname.tld:10001/https://example.com/some/other/directory', { method: "GET", responseType: "arraybuffer", auth: { username: 'username', password: 'password', } });
- 方案3:临时修改底层规则(不推荐)
若必须使用当前Axios版本,可手动修改node_modules/axios/lib/adapters/http.js中的端口匹配正则,将原正则中限制端口最多4位的规则调整为支持5位及以上即可,该修改会在重新安装依赖后失效,需配合patch-package等工具做持久化补丁处理。
内容的提问来源于stack exchange,提问作者syedmh
相关产品推荐
相关产品推荐

