Django redirect重定向快捷方法失效,浏览器无跳转该如何解决?
排查解决步骤
- 确认请求触发方式
如果maca_create是通过AJAX、Fetch、Axios等异步请求调用的,浏览器默认不会自动处理302重定向,需要前端在异步回调中手动获取响应头的Location字段,执行window.location.href = 跳转地址完成跳转。 - 验证响应状态码
打开浏览器F12开发者工具的「网络」面板,查看maca_create请求的响应状态:- 如果不是301/302:说明代码逻辑中存在装饰器、中间件或者后续代码修改了响应对象,把重定向响应改成了普通200响应,需要排查返回redirect之后是否有其他逻辑修改了返回值,或者装饰器拦截了返回结果。
- 如果是301/302:检查响应头的
Location字段是否是预期的跳转地址,确认该地址直接访问可以正常打开,没有404、500、权限校验拦截等问题。
- 校验路由反向解析配置
确认urls.py中maca应用的命名空间配置正确,detail路由的名称没有拼写错误,带参路由的参数规则和传入的pk匹配,反向解析生成的地址没有异常。 - 排查跨域拦截场景
如果是前后端分离部署,跨域场景下302响应的Location头默认会被浏览器跨域策略隐藏,需要在后端CORS配置中添加CORS_EXPOSE_HEADERS = ["Location"],允许前端读取该响应头后手动跳转。
内容的提问来源于stack exchange,提问作者maca
相关产品推荐
相关产品推荐

