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

使用Axios搭配TinyProxy时遭遇HTTPS重定向过多(ERR_FR_TOO_MANY_REDIRECTS)错误

使用Axios搭配TinyProxy时遭遇HTTPS重定向过多(ERR_FR_TOO_MANY_REDIRECTS)错误

看起来你遇到的问题核心是Axios通过HTTP代理请求HTTPS站点时,请求格式出现了错误,导致TinyProxy处理时生成了无效的URL,进而引发了无限重定向循环。我来帮你拆解下问题和解决方案:

问题根源分析

从你提供的TinyProxy日志里,有一行关键信息直接暴露了问题:

INFO      Feb 23 20:23:25.318 [4621]: process_request: trans Host GET http://whatismyipaddress.com:80https://whatismyipaddress.com/ for 6

可以看到,TinyProxy收到的请求被错误拼接成了http://whatismyipaddress.com:80https://whatismyipaddress.com/——这是把HTTP代理的目标地址和HTTPS请求的URL直接硬拼在了一起。这种无效URL会触发目标站点的重定向,而重定向后的请求又会被同样错误处理,最终形成循环,抛出ERR_FR_TOO_MANY_REDIRECTS错误。

这种情况通常是因为Axios默认的代理配置在处理“HTTP代理+HTTPS请求”的组合时,没有正确使用CONNECT隧道方式通信,而是把HTTPS请求当成普通HTTP请求转发给TinyProxy,才导致了URL拼接的混乱。

已验证的有效解决方案

你发现用http.Agent手动配置代理后能正常工作,这个思路完全正确。因为手动指定Agent可以强制Axios以正确的方式通过代理建立连接:对于HTTPS请求,会先通过代理发送CONNECT请求建立加密隧道,再传输HTTPS流量,从根本上避免了URL拼接错误。

如果需要同时支持HTTP和HTTPS请求的代理,可以扩展这个方案,分别配置对应的Agent:

import axios from "axios";
import http from "http";
import https from "https";

// 配置HTTP请求的代理Agent
const httpAgent = new http.Agent({  
  host: "你的代理服务器IP",  
  port: 你的代理端口,  
  protocol: "http:",  
});

// 配置HTTPS请求的代理Agent
const httpsAgent = new https.Agent({  
  host: "你的代理服务器IP",  
  port: 你的代理端口,  
  protocol: "http:",  
});

// 创建带全局代理配置的Axios实例
const proxyAxios = axios.create({
  httpAgent,
  httpsAgent
});

// 测试HTTPS请求
proxyAxios.get("https://whatismyipaddress.com")
  .then(response => console.log(response.data))
  .catch(error => console.error("错误:", error));

// 测试HTTP请求
proxyAxios.get("http://api.com")
  .then(response => console.log(response.data))
  .catch(error => console.error("错误:", error));

额外说明

你的TinyProxy配置(DisableViaHeader Yes和Allow 0.0.0.0/0)是没问题的,不需要调整。问题完全出在Axios默认代理配置对HTTP/HTTPS交叉场景的处理逻辑上,手动指定Agent是目前最直接可靠的解决方式。

备注:内容来源于stack exchange,提问作者UsAA12

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:05:29