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

Express中使用redirect跳转时报ERR_TOO_MANY_REDIRECTS错误如何解决

错误产生原因
  • 核心原因是相对路径重定向触发了路由循环:你当前使用的response.redirect('test.html')属于相对路径跳转,当你访问/rand/[随机数值]时,相对路径会基于当前路由前缀拼接,最终跳转目标为/rand/test.html。而你定义的路由规则/rand/:value中的:value是通配参数,可以匹配任意字符串段,因此/rand/test.html会再次命中该路由,触发新一轮重定向,无限循环后就会抛出ERR_TOO_MANY_REDIRECTS错误。
  • 附加触发场景:如果test.html的页面逻辑中会自动发起/rand/:value的fetch请求,fetch默认会自动跟随重定向响应,也会拉长循环请求链,加速报错触发。
解决方法
  • 优先使用绝对路径重定向:将重定向路径改为以/开头的绝对路径,直接从站点根目录解析目标地址,不会拼接当前路由前缀,自然不会再匹配/rand/:value规则,修改后代码如下:
app.get('/rand/:value', (request, response) => {
  response.redirect('/test.html');
});
  • 调整fetch接口的响应逻辑:如果该路由是专门供fetch请求调用的,不需要服务端直接触发页面重定向,可以改为返回JSON格式的跳转地址,由前端手动控制页面跳转,避免fetch自动跟随重定向导致的循环,示例代码如下:
// 服务端路由修改
app.get('/rand/:value', (request, response) => {
  response.json({
    code: 0,
    redirectUrl: '/test.html'
  })
});

// 前端fetch逻辑修改
fetch(`/rand/${randomValue}`)
  .then(res => res.json())
  .then(res => {
    if(res.redirectUrl) window.location.href = res.redirectUrl
  })
  • 给路由参数增加匹配限制:如果需要保留相对路径跳转逻辑,可以给:value参数增加正则匹配规则,比如限定仅匹配数字,避免test.html这类非数字字符串命中路由,示例代码如下:
// 仅当:value为纯数字时才会命中该路由
app.get('/rand/:value(\\d+)', (request, response) => {
  response.redirect('test.html');
});

内容的提问来源于stack exchange,提问作者A444433232

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:00:05