我正在使用 appengine sdk 在本地为 google app engine 开发一个小的 go 应用程序。
我有一个问题,只有当我尝试使用本地主机而不是域名来访问它时,才能提供不同于根目录的路径。
我的设置如下。
- home.mydomain.com 指向我家的ip地址
- 我的家庭路由器将端口 80 上的传入 tcp 和 udp 转发到端口 8080 上的笔记本电脑
- 我的笔记本电脑运行的是 Windows 10
- 我的go版本是go1.6 windows/amd64
我的 app.yaml:
application: tasks
version: 1
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app
最小示例代码:
func init() {
fileHandler := http.FileServer(http.Dir("../frontend"))
http.HandleFunc("/loggedout", testHandler)
http.Handle("/", fileHandler)
log.Print(http.ListenAndServe(":8080", nil))
}
func testHandler(res http.ResponseWriter, req *http.Request){
panic("JUST NEED THIS TO WORK")
}
我的症状是,如果我访问 localhost:8080/,我会得到我的网站,如果我访问 localhost:8080/loggedout,我会得到预期的 panic 。
如果我访问 home.mydomain.com/我得到我的网站,但是如果我访问 home.mydomain.com/loggedout 连接就挂起,在 chrome 网络选项卡中它被列为无限期挂起。
最佳答案
正如 Greg 所指出的,当我使用 goapp 时,我不需要同时调用 ListenAndServe。 为了让 goapp 监听本地主机之外的请求,我还必须在命令中添加 --host "my laptops ip"。
关于google-app-engine - GAE go 只提供本地主机上的路径而不是域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38403341/