2011-12-03 12 views
5

Próbuję napisać narzędzie przekierowania ssl dla aplikacji django (https://bitbucket.org/yilmazhuseyin/django-sslredirector). Mój problem polega na tym, że przekierowuję strony z http na https, nie mogę zrozumieć, że jestem na bezpiecznym połączeniu (kiedy wołam request.is_secure, to zwraca false). Myślę, że jest to hack, w jakiś sposób nazywany Webfaction, że nie mogę naprawdę zrozumieć, jak to działa. tutaj jest metoda is_secure dla przypadku webfactionDjango request.is_secure zwraca błędną wartość przekierowanych metod

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' 

Moim problemem jest to, kiedy przekierować moje strony z http na https, metoda request.is_secure nadal zwraca false (zdarzenie choć jestem na https), a ja ciągle przekierować na moich stronach https. Czy istnieje sposób na zrozumienie, czy jestem po prostu przekierowany z https?

Najlepszym źródłem udało mi się znaleźć jest to http://djangosnippets.org/snippets/880/ i nie działa dla mnie

Odpowiedz

5

Jeśli ruch przechodzi pewnego rodzaju proxy możliwe jest, że fakt, że używasz SSL zostaną ukryte. Jednak proxy zwykle ustawia jakiś nagłówek HTTP (lub możesz go skonfigurować, aby to zrobić). Jedną z opcji jest HTTP_X_FORWARDED_SSL. Heroku ustawia HTTP_X_FORWARDED_PROTO na https, jeśli używasz https.

+0

Mogę potwierdzić, że jest to rozwiązanie dla heroku –

Powiązane problemy