302 ошибка перенаправления перед 200 успешным кодом в колбе

1

Я запускаю приложение 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'))

Мой идентификационный сервер перенаправляется из-за первого ответа. Я не мог найти способ это исправить. Я не знаю, что ошибка произошла из-за попытки catch. Пожалуйста, помогите мне.

Теги:
flask
jwt
http-status-code-302

1 ответ

0

Вы используете redirect Flask для выдачи перенаправления, которая собирается отправить ответ 302 клиенту с заголовком Location указывается, что клиент отправляется в /home вместо этого. Затем клиент должен отправить запрос на этот новый URL-адрес, где клиент, наконец, получит код ответа 200. Вот почему вы видите два запроса и коды ответов 302 и 200 в журналах сервера.

Эта конкретная строка вызывает перенаправление:

return redirect(url_for('home'))

Похоже, вы ожидали, что redirect будет просто отображать содержимое /home и вернуть его как ответ с исходным запросом / (например, один ответ 200). Если это то, что вы действительно хотите, вместо этого вы можете использовать render_template (или все, что вы используете в /home для рендеринга вашего контента), чтобы напрямую отображать эту страницу. Тем не менее, я бы порекомендовал сохранить поведение перенаправления по своему усмотрению.

  • 0
    Есть ли способ удалить код 302 из заголовка, потому что сервер идентификации принимает первый ответ и дает ошибку.
  • 0
    Почему бы просто не сделать так, чтобы ваш index() маршрут просто return 'OK!' вместо перенаправления на /home ?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню