2015-06-08 7 views
18

ich alle meine HTTP-Header Antworten auf etwas setzen möchten:Python, Flask: Wie Antwort-Header für alle Antworten setzen

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

ich this question geprüft, aber es ändert sich nur die Kopfzeile für einen bestimmten Regler. Ich möchte alle meine Header möglicherweise in "before_request" Funktion ähnlich der folgenden Logik ändern. Wie kann ich das machen?

@app.before_request 
def before_request(): 
    # response.headers["X-Frame-Options"] = "SAMEORIGIN" 

Antwort

29

den Header in einem @app.after_request() hook Stellen, an welcher Stelle Sie eine Antwort bezwecken den Header setzen auf:

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

Die flask.request context noch zur Verfügung steht, wenn dieser Haken läuft, so können Sie immer noch variieren die Antwort basierend auf der Anfrage zu diesem Zeitpunkt.

+1

nur dazu hinzuzufügen. Sie sollten die '@ app.before_request' verwenden, um Ihr Header-Token zu erhalten und seine Gültigkeit zu überprüfen .. (Header sollte mit der Anfrage in javascirpt gesendet werden) und dann sollten Sie die Antwort-Header –

+0

@JohnRuddell On ändern Lager, Flask erzwingt keine Token-Verifizierung. Zu behaupten, dass Sie dies tun sollten, ist überhaupt nicht wahr. – kevr

+0

@kevr Wenn Sie ein Token haben, das validierte APIs (JWT zum Beispiel mit "Bearer" -Token-Header) validiert, dann ist die before_request eine Möglichkeit, die Gültigkeit Ihres Tokens zu überprüfen. Das ist alles, was ich sagen wollte. –