3 回答
TA贡献1876条经验 获得超6个赞
如果没有其余的代码,就很难预测。但是,根本原因可能是您在设置标头之前已经编写了响应。
要么是这样的:
w.Write([]byte(data))
或者像这样:
fmt.Printf(w, "A test response")
TA贡献1828条经验 获得超13个赞
GAE SDK 肯定存在错误。在开发和生产环境之间观察到不合理的不同行为。我遇到了同样的问题,我以特定顺序设置标题 - 适用于 dev 但在 prod 中未设置标题。
在 dev env 中,这会使您设置的标头正确返回:
func SignalingHandler(w http.ResponseWriter, r *http.Request) {
if r.Method != "GET" {
http.NotFound(w, r)
return
}
data := "test"
w.Write([]byte(data))
w.Header().Set("Content-Type", "application/json")
w.Header().Add("Access-Control-Allow-Origin", "*")
}
但是在 prod 环境中,我必须颠倒顺序 - 并且仅在设置标题后才使用“write”方法(否则它将不起作用):
func SignalingHandler(w http.ResponseWriter, r *http.Request) {
if r.Method != "GET" {
http.NotFound(w, r)
return
}
data := "test"
w.Header().Set("Content-Type", "application/json")
w.Header().Add("Access-Control-Allow-Origin", "*")
w.Write([]byte(data))
}
为了使产品在 prod 中工作,请确保在设置任何标头后不要使用 write 方法。
- 3 回答
- 0 关注
- 177 浏览
添加回答
举报