我目前正在使用React作为前端的simgle Flask应用程序。在他们完成登录过程后,我想以一种优雅的方式将用户重定向到他们的上一页。经过研究后,我发现使用HTTP Referer属性可以很好地工作,如下所示。
from flask import request
## Massive other code omitted
@app.route(""/login")
def log_in():
return redirect(request.referer)
我知道引荐标头是由浏览器添加的。问题是,这是将用户重定向回使用HTTP引荐来源网址的一种好习惯吗?使用此方法有什么隐忧吗?
您可以创建一个函数,该函数返回用于重定向的良好且安全的URL,并在您的登录视图中使用它。
def safe_redirect_url():
next_url = request.args.get('next') or request.referrer or url_for("index")
if next_url and url_parse(next_url).netloc == "":
return next_url
return None
在重定向之前,您可以添加如下支票:
url = safe_redirect_url()
if url:
redirect(url)
else:
return "Error"