Python, Flask: как настроить ответный заголовок для всех ответов

19

Я хочу, чтобы все мои ответы заголовков HTTP были примерно такими:

response.headers["X-Frame-Options"] = "SAMEORIGIN"

Я проверил этот вопрос , но он только меняет заголовок для одного конкретного контроллера. Я хочу изменить все свои заголовки, возможно, в функции «before_request», подобную следующей логике. Как я могу это сделать?

@app.before_request
def before_request():
    # response.headers["X-Frame-Options"] = "SAMEORIGIN"
    
задан Saeid 08.06.2015 в 21:08
источник

1 ответ

30

Установите заголовок в @app.after_request() hook , после чего вы иметь объект ответа для установки заголовка:

@app.after_request
def apply_caching(response):
    response.headers["X-Frame-Options"] = "SAMEORIGIN"
    return response

flask.request контекст по-прежнему доступен, когда этот крючок работает, поэтому вы можете по-прежнему изменяют ответ на основе запроса в настоящее время.

    
ответ дан Martijn Pieters 08.06.2015 в 21:11
источник
  • просто чтобы добавить к этому. вы должны использовать @ app.before_request, чтобы получить свой токен заголовка и проверить его достоверность .. (заголовок должен быть отправлен с запросом в javascirpt), а затем ваш запрос будет там, где вы должны изменить заголовки ответов –  John Ruddell 08.06.2015 в 21:23
  • @JohnRuddell В наличии, Flask не обеспечивает или не обеспечивает проверку токена. Утверждение, что вы должны сделать это, совсем не так. –  kevr 24.11.2016 в 07:58
  • @kevr, если у вас есть токен, который обеспечивает проверку блокировки api (например, JWT с заголовком маркера «Bearer»), то before_request - это способ проверить правильность вашего токена. Это все, что я пытался сказать. –  John Ruddell 24.11.2016 в 08:02
  • @opyate: это довольно большое редактирование, которое вы там сделали. Можете ли вы использовать комментарий, чтобы указать дополнительные вопросы в будущем? Я довольно активен в SO и всегда открыт для предложений. –  Martijn Pieters♦ 09.01.2018 в 15:47
  • @opyate: Я откатил это редактирование. Взлом картинок after_requests_func является гораздо более сложной темой и, возможно, должен быть предметом отдельной пары вопросов и ответов. –  Martijn Pieters♦ 09.01.2018 в 15:48
Показать остальные комментарии