2015-06-08 9 views
18

voglio impostare tutte le mie risposte intestazioni HTTP a qualcosa di simile:Python, Flask: Come impostare intestazione di risposta per tutte le risposte

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

ho controllato this question, ma cambia solo l'intestazione per una specifica controller. Voglio cambiare tutte le mie intestazioni magari nella funzione "before_request" simile alla seguente logica. Come lo posso fare?

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

risposta

29

Impostare l'intestazione in un @app.after_request() hook, a quel punto si dispone di un oggetto di risposta per impostare l'intestazione:

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

Il flask.request context è ancora disponibile quando questo hook viene eseguito, in modo da poter ancora variare la risposta basata sulla richiesta in questo momento.

+1

solo per aggiungere a questo. dovresti usare la '@ app.before_request' per ottenere il tuo token di intestazione e controllarne la validità .. (l'intestazione dovrebbe essere inviata con la richiesta in javascirpt) e poi la tua richiesta successiva è dove dovresti cambiare le intestazioni di risposta –

+0

@JohnRuddell On magazzino, Flask non applica o fornisce la verifica del token. Affermare che si dovrebbe fare questo non è affatto vero. – kevr

+0

@kevr se si dispone di un token che fornisce la convalida per bloccare le API (JWT ad esempio con l'intestazione del token "Bearer"), quindi before_request è un modo per verificare la validità del token. Questo è tutto ciò che stavo cercando di dire. –

Problemi correlati