Go 包google.golang.org/appengine提供IsDevAppServer报告 App Engine 应用程序是否正在开发应用程序服务器中运行(例如localhost:8080
)。但是,除非使用(已弃用)独立 SDK ,否则这不起作用。有关实现,请参见appengine.go#L57。
用 Go 编写的新 GAE 应用程序基本上是一个常规的 Web 服务器,可以像任何 Go 程序一样在本地编译和启动;
- 老的;
dev_appserver.py
- 新的;
go run main.go
在本地运行时,检测开发服务器有助于防止出现 CORS 问题:
func setDevHeaders(w http.ResponseWriter) {
w.Header().Set("Access-Control-Allow-Origin", "http://localhost:4200")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
w.Header().Set("Access-Control-Request-Method", "POST, GET")
w.Header().Set("Access-Control-Expose-Headers", "Content-Disposition")
}
需要时,我可以分支:
if appengine.IsDevAppServer() {
setDevHeaders(w)
}
在 App Engine 上运行的独立 Go 服务器中实现此目的的推荐方法是什么?