Non sono sicuro se @ CraigKerstiens di risposta tiene conto che request.is_secure()
restituisce sempre False
se dietro proxy inverso del Heroku e non "fisso". Se ricordo male, ciò causerebbe un loop di reindirizzamento HTTP.
Se si esegue Django con gunicorn, un altro modo per farlo è quello di aggiungere la seguente configurazione per di gunicorn
secure_scheme_headers = {
'X-FORWARDED-PROTO': 'https'
}
Run con alcuni, come questo nella vostra Procfile
web: python manage.py run_gunicorn -b 0.0.0.0:$PORT -c config/gunicorn.conf
Impostando gunicorn di secure-scheme-header
, request.is_secure()
restituirà correttamente True
su richieste https. Vedi Gunicorn Config.
Ora il middleware di CraigKerstiens funzionerà correttamente, comprese le chiamate a request.is_secure()
nella tua app.
Nota: Django ha anche la stessa impostazione di configurazione chiamata SECURE_PROXY_SSL_HEADER
, ma nella versione dev.
fonte
2012-02-09 03:10:34
Answer è ora una [app su github] (https://github.com/rdegges/django-sslify) –
Upvote per mettere su github ... Grazie! Proprio quello che stavo cercando oggi. –
Come nota a margine, ciò non funziona se DEBUG è impostato su True. Passato un'ora a capire che è uscito, quindi spero che questo salvi qualcuno da qualche tempo. – Femi