发送与瓶码401不重定向重定向

问题描述:

当我做到这一点,它的工作:发送与瓶码401不重定向重定向

return redirect('/admin-login') 

但是,当我试图通过在参数HTTP代码,重定向不工作,我去此页:`

return redirect('/admin-login', code=401) 

重定向...

你应该被自动重定向到目标网址:/管理员登录。如果 没有点击链接。

我该如何解决这个问题?谢谢

消息实际上是在这两种情况下。 Flask使用Location标题字段触发重定向。所以当你的浏览器看到它跳过显示内容并立即重定向。

它不适用于code=401的原因是因为401 Unauthorized是客户端错误。这会导致浏览器忽略重定向(至少在Chrome中)。

flask.redirect烧瓶文档中提到了以下几点:

支持的代码是301,302,303,305和307。

它没有具体提到为什么他们是唯一支持的。但最好的假设是因为浏览器通常不应该重定向,如果它不是3XX status code (Redirection)

该解决方案因此使用支持的状态代码之一。

+0

感谢您的帮助 – QuebecSquad

+0

@QuebecSquad欢迎您! – Vallentin

我的解决方案是创建自定义错误页面,将重定向元添加到标题。这将迫使该页面的页面5秒被打开后,被重定向到首页=}

<meta http-equiv="refresh" content="5;url=/" /> 

解决方案,为我工作:

@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) 

...但事实证明,“code = 401”规范是不需要的,如果它在错误处理程序中,没有它,它会自动重定向。