2012-09-23 72 views
0

我試圖使用webapp2的DomainRoute將請求路由到特定用戶。該路由的定義是這樣的:在谷歌應用引擎上使用webapp2的DomainRoute

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

所有存在,目前,我ClientHandler的應該只是吐出當前子域的處理程序,但是當我現在去nosub.localhost:8090它甚至沒有達到服務器。我需要編輯我的主機文件嗎?如果是這樣,是否有效添加像* .localhost這樣的wildcart,以便任何子域都可以工作?

回答

1

是的,您需要編輯您的主機文件 - whatever.localhost不會自動解析爲127.0.0.1。或者,節省一些時間並使用xip.io

但是,您的代碼有一個重大問題:您在僅在第一個請求上運行的上下文中使用os.environ["HTTP_HOST"]。這意味着你將第一個請求中的主機名提取到你的應用中,並將其用作它的基本名稱和所有後續請求 - 這絕對不是你想要的。例如,如果您的應用實例的第一位用戶來自subdomain.myapp.com,那麼您將爲subdomain.subdomain.myapp.com設置路由。

+0

如何管理正確提取主機名? – BillPull

+0

@BillPull哪個主機名?在腳本運行的時候,它不可能知道它在生命週期中可能訪問的主機名。 –

相關問題