在谷歌应用引擎上使用webapp2的DomainRoute

时间:2012-09-23 22:56:36

标签: python google-app-engine routing subdomain webapp2

我正在尝试使用webapp2的DomainRoute将请求路由到特定用户。路线的定义如下:

app = webapp2.WSGIApplication([
                                DomainRoute("<subdomain>." + os.environ["HTTP_HOST"], [
                                    webapp2.Route('/',ClientHandler)]),
                            ('/', MainHandler)],
                            debug=True)

处理程序都存在,目前,我的ClientHandler应该只吐出当前的子域,但是当我转到nosub.localhost:8090时,它甚至都没有到达服务器。我需要编辑我的主机文件吗?如果是这样,添加像* .localhost这样的通配符是否有效,这样任何子域都可以工作?

1 个答案:

答案 0 :(得分:1)

是的,您需要修改主机文件 - whatever.localhost不会自动解析为127.0.0.1。或者,节省一些时间并使用xip.io

但是,您的代码存在严重问题:您在仅在第一个请求上运行的上下文中使用os.environ["HTTP_HOST"]。这意味着您从第一个请求中提取主机名到您的应用程序,并将其用作它的基本名称和所有后续请求 - 这绝对不是您想要的。例如,如果您的应用实例的第一个用户来自subdomain.myapp.com,您将为subdomain.subdomain.myapp.com设置路由。