FLASK中的200成功代码之前出现302重定向错误

时间:2018-12-06 12:28:04

标签: python flask jwt http-status-code-302

我正在运行FLASK应用程序,在其中检查索引端点中的JWT。问题是执行此端点时得到2个响应。

127.0.0.1 - - [06/Dec/2018 17:38:21] "GET / HTTP/1.1" 302 -
127.0.0.1 - - [06/Dec/2018 17:38:21] "GET /home HTTP/1.0" 200 - 

我的代码是

@app.route('/')
def index():
    try:
        encoded_jwt=request.headers.get('jwt')
        print(encoded_jwt)
        secret = "-----BEGIN PUBLIC KEY----- ........"

        claims = jwt.decode(encoded_jwt, secret)
        print(type(claims))
        import json

        json_parse = json.loads(json.dumps(claims))
        email = json_parse['http://wso2.org/claims/emailaddress']
        print(email)
        roles = json_parse['http://wso2.org/claims/role']
        print(roles)

        session['email'] = email

        if ROLETAGOFADMIN in roles:
            role="admin"

        elif "" in roles:
            role = "employee"

        else:
            role=None

        session['role'] = role

        if 'email' in session and (session['role'] == "admin" or session['role'] == "employee"  )and request.method == "GET":
            if 'lastpage' in session:
                lastpage=session['lastpage']
                print(lastpage)
                session.pop('lastpage')
                return  redirect(lastpage)
            else:
                return redirect(url_for('home'))
        else:
            return "Sorry. Unfortunately You have no access."

    except Exception as e:
        return redirect(url_for('error'))

由于第一个响应,我的身份服务器正在重定向。我找不到解决该问题的方法。我不知道由于try catch导致发生错误。请帮我。

1 个答案:

答案 0 :(得分:0)

您正在使用Flask的redirect发出重定向,该重定向将向客户端发送302响应,并带有Location header指示客户端转到/home。然后,客户端必须向该新URL发出请求,客户端最终将获得200响应代码。因此,您在服务器日志中看到两个请求以及302和200响应代码。

此特定行引起了重定向:

return redirect(url_for('home'))

您似乎希望redirect能够简单地呈现/home的内容,并将其作为对原始请求的响应返回到/(例如,单个200响应)。如果那是您真正想要的,则可以使用render_template(或您在/home中使用的呈现内容的方式)直接呈现该页面。但是,我建议您保持重定向行为不变。