Nie wiem czy @ CraigKerstiens na odpowiedź uwzględnia fakt, że request.is_secure()
zawsze zwraca False
jeśli za reverse proxy Heroku a nie „stałe”. Jeśli dobrze pamiętam, spowoduje to pętlę przekierowania HTTP.
Jeśli używasz Django z gunicorn, innym sposobem na to jest dodanie następujących do gunicorn na config
secure_scheme_headers = {
'X-FORWARDED-PROTO': 'https'
}
Uruchom z jednymi jak to w swoim Procfile
web: python manage.py run_gunicorn -b 0.0.0.0:$PORT -c config/gunicorn.conf
Ustawiając gunicorn-tych secure-scheme-header
, request.is_secure()
prawidłowo zwróci True
na prośby https. Zobacz Gunicorn Config.
Teraz oprogramowanie pośredniczące middleware @ CraigKerstiens będzie działać poprawnie, w tym wszelkie połączenia z numerem request.is_secure()
w aplikacji.
Uwaga: Django ma również to samo ustawienie konfiguracyjne, wywołanie SECURE_PROXY_SSL_HEADER
, ale w wersji dla deweloperów.
Odpowiedź jest teraz [aplikacja na github] (https://github.com/rdegges/django-sslify) –
Awans na wprowadzenie github ... Dzięki! Właśnie tego szukałem dzisiaj. –
Na marginesie, to nie działa, jeśli DEBUG ma wartość True. Spędziłem godzinę, wymyślając to jedno, więc mam nadzieję, że to kogoś oszczędza. – Femi