2011-12-03 18 views
5

Estoy intentando escribir una utilidad de redirección de ssl para aplicaciones django (https://bitbucket.org/yilmazhuseyin/django-sslredirector). Mi problema es cuando redirijo las páginas de http a https, no puedo entender que estoy en conexión segura (cuando llamo request.is_secure, devuelve false). Creo que hay un truco para esto, de alguna manera llamado Webfaction, que realmente no puedo entender cómo funciona. aquí es el método is_secure para el caso webfactionDjango request.is_secure devuelve un valor incorrecto para los métodos redirigidos

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' 

Mi problema es cuando vuelvo a dirigir mis páginas de http a https, el método request.is_secure todavía devuelve falso (evento aunque estoy en https) y redirigir constantemente a mis páginas https. ¿Hay alguna forma de entender si me acaban de redirigir desde https?

La mejor fuente que pude encontrar es este http://djangosnippets.org/snippets/880/ y no está funcionando para mí

Respuesta

5

Si el tráfico está pasando por algún tipo de representación es posible que el hecho de que está utilizando SSL se ocultará. Sin embargo, el proxy generalmente establecerá algún tipo de encabezado HTTP (o puede configurarlo para que lo haga). Una opción es HTTP_X_FORWARDED_SSL. Heroku establece HTTP_X_FORWARDED_PROTO en https si está utilizando https.

+0

Puedo confirmar que esta es la solución para heroku –

Cuestiones relacionadas