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 關注
- 207 瀏覽
添加回答
舉報