Не уверен, если ответ @ CraigKerstiens учитывает, что request.is_secure()
всегда возвращает False
, если находится за обратным прокси-сервером Heroku, а не "исправлено". Если я правильно помню, это вызовет цикл перенаправления HTTP.
Если вы используете Django с gunicorn, другой способ сделать это - добавить следующее в конфигурацию gunicorn
secure_scheme_headers = {
'X-FORWARDED-PROTO': 'https'
}
Запустите с таким в вашем Procfile
web: python manage.py run_gunicorn -b 0.0.0.0:$PORT -c config/gunicorn.conf
При настройке gunicorn's secure-scheme-header
, request.is_secure()
будет правильно возвращать True
при запросах https. См. Конфиг Gunicorn .
Теперь промежуточное ПО @ CraigKerstiens будет работать правильно, включая любые вызовы request.is_secure()
в вашем приложении.
Примечание: Django также имеет тот же вызов настройки конфигурации SECURE_PROXY_SSL_HEADER
, но в версии dev.