2012-01-13 72 views
8

有没有人破解了如何让HTTPS在dev_appserver.py上工作?我需要它进行Facebook画布应用测试。我搜索了文档,但没有任何内容表明有办法做到这一点(在app.yaml中“坚持”安全性并不是什么地方)。通过HTTPS GAE dev_appserver.py

我认为可能有代表它的方法,但是有没有人有过这方面的经验?

回答

6

dev_appserver不支持HTTPS。这样做的唯一可行的方法是在您的应用程序前面设置反向代理 - 例如使用nginx或Apache - 并将代理SSL流量代理到您的应用程序。

+0

你是怎么做到的? – 2012-01-16 09:38:05

+2

@AhmedNuaman这将是一个不同的问题 - 一个用于serverfault.com,而不是Stack Overflow。 – 2012-01-16 10:19:19

1

我知道这是后期,万一别人发现这个问题:

ngrok是安静容易安装自定义反向HTTPS代理..

唯一的缺点是,我的webapp2的应用仍然认为它是通过HTTP提供服务的,因此使用redirect()不适用,因为它使用request.url将相对URL解析为绝对URL。

我的解决方法是覆盖RequestHandler.redirect如下:

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) 

我需要一个BaseRequestHandler类反正,用于实现其他实用功能。

0

我把这个在我的Appache httpd.conf中代理的连接:

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

现在要https://localhost/myproject/在我的浏览器工作。

注意:需要在您的Apache服务器上启用SSL。在我的OS X机器上,我取消注释掉/etc/apache2/httpd.conf中的Include /private/etc/apache2/extra/httpd-ssl.conf行,并运行sudo apachectl restart