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

Flask redirect重定向不生效,同时出现未定义undefined路由404如何解决?

Flask重定向触发额外undefined路由404问题解决方案

核心根因(90%概率属于第一种场景)

你触发重定向的请求是前端异步请求(AJAX/Fetch/Axios等),而非浏览器同步表单提交:

  • 后端返回302重定向响应时,浏览器会自动先跟随重定向请求/verify_account/verify_sms,返回200状态码
  • 你的前端JS代码中同时写了手动跳转逻辑,比如window.location.href = res.data.url这类代码,但后端没有返回跳转地址给前端,拿到的url值为undefined,相对路径拼接后就生成了/verify_account/undefined的错误请求,导致跳转失败

解决方案

场景1:请求为异步请求

后端不要返回redirect重定向,改为返回带跳转路径的JSON响应:

if val:
    print("val true",val)
    return {"code": 0, "redirect_url": url_for('users.verify_sms_otp')}

前端收到响应后手动执行跳转:

// 以axios为例
axios.post('/your/current/route', data).then(res => {
  if (res.data.code === 0) {
    window.location.href = res.data.redirect_url
  }
})

场景2:请求为同步表单提交

按以下顺序排查:

  • 检查EnterMobileOTP.html模板内的所有静态资源引用,有没有使用未定义的变量拼接路径,比如<img src="{{ undefined_var }}">这类写法,渲染后会生成src="undefined",相对路径会自动拼接当前路由前缀,触发404请求
  • 检查蓝图users的url_prefix配置是否符合预期,确保url_for('users.verify_sms_otp')生成的路径确实是/verify_account/verify_sms,可以在代码中打印该值验证
  • 确认没有全局请求拦截器/中间件修改了重定向响应的地址

内容的提问来源于stack exchange,提问作者Nur Amin Sifat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 16:03:02