Không chắc chắn nếu @ CraigKerstiens của câu trả lời sẽ đưa vào tài khoản đó request.is_secure()
luôn trả False
nếu đằng sau reverse proxy Heroku và không phải là "cố định". Nếu tôi nhớ chính xác, điều này sẽ gây ra một vòng lặp chuyển hướng HTTP.
Nếu bạn đang chạy Django với gunicorn, một cách khác để làm điều đó là để thêm dòng sau vào gunicorn của cấu hình
secure_scheme_headers = {
'X-FORWARDED-PROTO': 'https'
}
Chạy với một số như thế này trong Procfile
web: python manage.py run_gunicorn -b 0.0.0.0:$PORT -c config/gunicorn.conf
của bạn Bằng cách đặt của gunicorn secure-scheme-header
, request.is_secure()
sẽ trả lại đúng số True
cho các yêu cầu https. Xem Gunicorn Config.
Bây giờ phần mềm trung gian của @ CraigKerstiens sẽ hoạt động bình thường, bao gồm mọi cuộc gọi đến request.is_secure()
trong ứng dụng của bạn.
Lưu ý: Django cũng có cùng cài đặt cấu hình gọi SECURE_PROXY_SSL_HEADER
, nhưng trong phiên bản dev.
Nguồn
2012-02-09 03:10:34
Trả lời bây giờ là một [ứng dụng trên github] (https://github.com/rdegges/django-sslify) –
Upvote để đưa vào github ... Cảm ơn! Chỉ là những gì tôi đang tìm kiếm ngày hôm nay. –
Một lưu ý phụ, điều này không có tác dụng nếu bạn đã đặt DEBUG thành True. Đã dành một giờ để tìm ra điều đó, vì vậy hy vọng điều này sẽ tiết kiệm thời gian cho ai đó. – Femi