通过HTTPS GAE dev_appserver.py

时间:2012-01-13 10:24:31

标签: google-app-engine https

是否有人破解了如何在dev_appserver.py上运行HTTPS?我需要它用于Facebook画布应用测试。我已经对文档进行了搜索,没有任何迹象表明有一种方法可以做到这一点(在app.yaml中坚持'安全'并不是本地的)。

我认为可能有一种代理方式,但是有没有人有这方面的经验?

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

我知道这已经晚了,以防其他人发现此问题:

对于自定义反向HTTPS代理,

ngrok很容易设置..

唯一的缺点是我的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类来实现其他实用功能。

答案 2 :(得分: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