亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在運行 AppEngine 的 Go 服務器生成的響應中設置 HTTP 標頭?

如何在運行 AppEngine 的 Go 服務器生成的響應中設置 HTTP 標頭?

Go
幕布斯6054654 2021-07-29 17:51:05
我正在嘗試使用 golang 和 google app engine 設置標題。下面是簡單代碼的樣子:w.Header().Set("Content-Type", "application/xml")w.Header().Set("Access-Control-Allow-Origin", "*")    w.Header().Set("header-name", "value")它似乎不適用于我的開發服務器。我總是得到通常的標題和content-type:text/plain; charset=utf-8當我部署時,我得到Content-Type:text/html; charset=utf-8我做錯了還是這是一個錯誤(另一個)?
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

問題似乎是我在自定義標頭之前設置了 http 代碼。請注意,如果您有w.WriteHeader(200)之前w.Header的標題將不會被設置。


查看完整回答
反對 回復 2021-08-02
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

如果沒有其余的代碼,就很難預測。但是,根本原因可能是您在設置標頭之前已經編寫了響應。

要么是這樣的:

w.Write([]byte(data))

或者像這樣:

fmt.Printf(w, "A test response")


查看完整回答
反對 回復 2021-08-02
?
慕田峪7331174

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 方法。


查看完整回答
反對 回復 2021-08-02
  • 3 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號