主頁 > 知識庫 > 解決Golang中ResponseWriter的一個坑

解決Golang中ResponseWriter的一個坑

熱門標簽:外呼系統顯本地手機號 電話機器人軟件免費 外呼系統用什么卡 阿克蘇地圖標注 百度地圖標注后傳給手機 涿州代理外呼系統 評價高的400電話辦理 壽光微信地圖標注 excel地圖標注分布數據

在使用Context.ResponseWriter中的Set/WriteHeader/Write這三個方法時,使用順序必須如下所示,否則會出現某一設置不生效的情況。

ctx.ResponseWriter.Header().Set("Content-type", "application/text")
 ctx.ResponseWriter.WriteHeader(403)
 ctx.ResponseWriter.Write([]byte(resp))

如1:

ctx.ResponseWriter.Header().Set("Content-type", "application/text")
 ctx.ResponseWriter.Write([]byte(resp))
 ctx.ResponseWriter.WriteHeader(403)

會導致返回碼一直是200

補充:Go里w http.ResponseWriter,調用w.Write()方法報錯

Go里w http.ResponseWriter寫入報錯

http: request method or response status code does not allow

1. 下面是報錯截圖

2. 點進去Write方法

它首先是一個接口;

由于它是在HTTP web服務器的應用場景,所以它具體的實現方法在net/http/server.go里:

func (w *response) Write(data []byte) (n int, err error) {
 return w.write(len(data), data, "")
}

再點進去,函數里你會發(fā)現有一個關鍵的判斷

// 其中ErrBodyNotAllowed的
// 代碼內容
// ErrBodyNotAllowed = errors.New("http: request method or response status code does not allow body")
if !w.bodyAllowed() {
 return 0, ErrBodyNotAllowed
}
 

點進去,發(fā)現它在沒有設置Header時會panic,當然這跟我們當前要討論的問題關系不大,關鍵在bodyAllowedForStatus()方法

func (w *response) bodyAllowed() bool {
 if !w.wroteHeader {
  panic("")
 }
 return bodyAllowedForStatus(w.status)
}

再點,終于看到了,當設置狀態(tài)碼為【100,199】、204、304就會報這個錯,而我剛好設置的狀態(tài)碼就是204,我把它改成200重新試下,問題解決。

func bodyAllowedForStatus(status int) bool {
 switch {
 case status >= 100  status = 199:
  return false
 case status == 204:
  return false
 case status == 304:
  return false
 }
 return true
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang設置http response響應頭與填坑記錄
  • 解決golang處理http response碰到的問題和需要注意的點
  • golang中為什么Response.Body需要被關閉詳解

標簽:雞西 銅川 重慶 梅河口 蘭州 汕頭 吐魯番 欽州

巨人網絡通訊聲明:本文標題《解決Golang中ResponseWriter的一個坑》,本文關鍵詞  解決,Golang,中,ResponseWriter,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決Golang中ResponseWriter的一個坑》相關的同類信息!
  • 本頁收集關于解決Golang中ResponseWriter的一個坑的相關信息資訊供網民參考!
  • 推薦文章