2012-01-13 20 views
8

¿Alguien ha descifrado cómo hacer que HTTPS funcione en dev_appserver.py? Lo necesito para las pruebas de la aplicación Facebook Canvas. He tenido una búsqueda de los documentos y nada sugiere que haya una manera de hacerlo (pegándome 'seguro' en la aplicación. No hay nada localmente).GAE dev_appserver.py sobre HTTPS

Creo que puede haber una forma de proxy, pero ¿alguien tiene alguna experiencia en esto?

Respuesta

6

El dev_appserver no es compatible con HTTPS. La única forma práctica de hacerlo es configurar un proxy inverso en frente de su aplicación, como nginx o Apache, y tener un tráfico proxy SSL en su aplicación.

+0

¿Y cómo lo hizo? –

+2

@AhmedNuaman Esa sería una pregunta diferente, y una para serverfault.com, no Stack Overflow. –

1

Sé que es tarde, en caso de que nadie cree que esta pregunta: ¿

ngrok es tranquila fácil de configurar para un encargo revertir proxy HTTPS ..

El único inconveniente es que mi solicitud webapp2 aún cree que se está publicando en HTTP, por lo que usar redirect() no funciona bien porque resuelve URL relativas a URL absolutas usando request.url.

Mi solución fue sobrescribir RequestHandler.redirect de la siguiente manera:

class BaseRequestHandler(RequestHandler): 
    def redirect(self, uri, permanent = False, abort = False, code = None, body = None): 
    if uri.startswith(('.', '/')): 
     base_url = self.request.url 
     if base_url.startswith('http://'): 
     base_url = 'https://' + base_url[7:] 
     uri = str(urlparse.urljoin(base_url, uri)) 
    super(RequestHandler, self).redirect(uri, permanent, abort, code, body) 

que necesitaba una clase BaseRequestHandler de todos modos para implementar otras funciones de utilidad.

0

pongo esto en mi Appache httpd.conf para proxy de la conexión:

<Location /myproject/> 
    ProxyPass http://localhost:8080/ 
</Location> 

Ahora va a https://localhost/myproject/ en mi navegador funcionó.

Nota: SSL debe estar habilitado en su servidor Apache. En mi máquina OS X, descomente la línea Include /private/etc/apache2/extra/httpd-ssl.conf en /etc/apache2/httpd.conf y ejecute sudo apachectl restart

Cuestiones relacionadas