为 SSL 烧瓶太多重定向

aha*_*378 5 python ssl flask

我试图在我的烧瓶应用程序中强制 http 到 https,但在我尝试使用的两种方法中我不断收到错误“重定向过多”。我已经尝试并阅读了类似的 SO 问题,但还没有解决。我究竟做错了什么?

这是使用装饰函数的第一个方法:

def ssl_required(fn):
@wraps(fn)
def decorated_view(*args, **kwargs):
    if request.is_secure:
        return fn(*args, **kwargs)
    else:
        return redirect(request.url.replace("http://", "https://"))

    return decorated_view
Run Code Online (Sandbox Code Playgroud)

这是我的视图函数:

@main.route('/stats', methods=["GET", "POST"])
@ssl_required
@login_required
def stats():

    users = User.query.all()

    return render_template('stats.html', users=users)
Run Code Online (Sandbox Code Playgroud)

这是第二种方法:

@auth.before_app_request
def before_request():
    if request.url.startswith('http://'):
        url = request.url.replace('http://', 'https://', 1)
        code = 301
        return redirect(url, code=code)
Run Code Online (Sandbox Code Playgroud)

这个视图函数是:

@main.route('/stats', methods=["GET", "POST"])
@login_required
def stats():

    users = User.query.all()

    return render_template('stats.html', users=users)
Run Code Online (Sandbox Code Playgroud)