从 Javascript 到 Flask 的注销请求

Logout request from Javascript to Flask

我正在尝试使用 Flask-Login 从我的 Web 应用程序注销用户。

这是我的 Javascript 函数:

function logout() {
  var req = new XMLHttpRequest();
  req.open("POST", "http://myaddress/logout", true);
  req.withCredentials = true;
  req.send();

这是我的 Python 函数:

@app.route('/logout')
@login_required
def logout_function():
    logout_user() # Built-in Flask-Login function
    return app.send_static_file('login.html')

当我从 Javascript 发送我的请求时,我收到 200,但页面保持不变,因为没有发生重定向。我尝试将 Python 函数的最后一行更改为 return redirect(url_for('login_function')),但没有帮助。

会不会是我的 Javascript 功能导致了问题?

您需要使用 JavaScript 重定向到注销页面:

function logout() {
    var req = new XMLHttpRequest();
    req.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
           window.location.replace("http://myaddress/logout.html");
        }
    };
    req.open("POST", "http://myaddress/logout", true);
    req.withCredentials = true;
    req.send();
}

您可以硬编码注销-URL,如上所示。在这种情况下,您只需要 return 一个 200 状态码:

return ('', 200)

如果您想 return url,您可以使用 req.responseText:

访问它

烧瓶:

return (url_for('login_function'), 200)

JavaScript:

if (this.readyState == 4 && this.status == 200) {
    window.location.replace(req.responseText);
}