当我这样做时,它起作用:
return redirect('/admin-login')
但是当我尝试在参数中传递http代码时,重定向不起作用,我进入了这个页面:`
return redirect('/admin-login', code=401)
...重定向
您应该自动重定向到目标网址:/ admin-login。如果 不要点击链接。
我该如何解决这个问题?感谢
答案 0 :(得分:3)
在这两种情况下,消息实际上都是那里。 Flask使用Location
标题字段来触发重定向。因此,当您的浏览器看到它跳过显示内容并立即重定向时。
它不适用于code=401
的原因是因为401 Unauthorized
是客户端错误。这会导致浏览器忽略重定向(至少使用Chrome)。
flask.redirect
的Flask文档提到了以下内容:
支持的代码为301,302,303,305和307。
没有具体提及为什么他们是唯一受支持的人。但最好的假设是因为浏览器通常不应该重定向,如果它不是3XX status code (Redirection)。
因此,解决方案是使用支持的状态代码之一。
答案 1 :(得分:1)
我的解决方案是创建自定义错误页面,将重定向元数据添加到标题中。这将强制页面在页面打开5秒后重定向到主页=}
<meta http-equiv="refresh" content="5;url=/" />
答案 2 :(得分:1)
对我有用的解决方案:
@app.errorhandler(401)
def page_not_found(e):
return redirect('http://example.com')
以前我一直在尝试:
@app.errorhandler(401)
def page_not_found(e):
return redirect('http://example.com', code=401)
...但事实证明&#34;,代码= 401&#34;如果它在错误处理程序中运行,则不需要规范,如果没有它,它会自动重定向。