2011-12-03 37 views
5

Tôi đang cố viết một tiện ích chuyển hướng ssl cho các ứng dụng django (https://bitbucket.org/yilmazhuseyin/django-sslredirector). Vấn đề của tôi là khi tôi chuyển hướng các trang từ http đến https, tôi không thể hiểu rằng tôi đang kết nối an toàn (khi tôi gọi request.is_secure nó trả về false). Tôi nghĩ rằng có một hack cho điều này, bằng cách nào đó được gọi là Webfaction mà tôi không thể thực sự có được làm thế nào nó hoạt động. đây là phương pháp is_secure đối với trường hợp webfactionDjango request.is_secure trả về giá trị sai cho các phương thức được chuyển hướng

def _is_secure(self, request): 
     if request.is_secure(): 
     return True 

     #Handle the Webfaction case until this gets resolved in the request.is_secure() 
     if 'HTTP_X_FORWARDED_SSL' in request.META: 
     return request.META['HTTP_X_FORWARDED_SSL'] == 'on' 

Vấn đề của tôi là khi tôi chuyển hướng các trang của tôi từ http đến https, phương pháp request.is_secure vẫn trả về false (sự kiện mặc dù tôi trên https) và tôi không ngừng chuyển hướng trang web của tôi để https. Có cách nào để hiểu liệu tôi có được chuyển hướng từ https không?

Các nguồn tốt nhất tôi có thể tìm thấy là http://djangosnippets.org/snippets/880/ này và nó không phải đang làm việc cho tôi

Trả lời

5

Nếu giao thông của bạn đang trải qua một số loại proxy có thể là một thực tế rằng bạn đang sử dụng SSL sẽ được ẩn. Tuy nhiên, proxy thường sẽ thiết lập một số loại tiêu đề HTTP (hoặc bạn có thể cấu hình nó để làm như vậy). Một tùy chọn là HTTP_X_FORWARDED_SSL. Heroku đặt HTTP_X_FORWARDED_PROTO thành https nếu bạn đang sử dụng https.

+0

Tôi có thể xác nhận rằng đây là giải pháp cho heroku –

Các vấn đề liên quan