首頁 >後端開發 >Golang >為了更好的資源管理,你應該限制 Go 中的請求正文大小嗎?

為了更好的資源管理,你應該限制 Go 中的請求正文大小嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-17 07:52:25495瀏覽

Should you Limit Request Body Size in Go for Better Resource Management?

限制Golang 中請求正文的大小以保護資源

問題:

是否建議進一步限制請求正文的大小使用時的形式去嗎?

答案:

是的,建議限製表單請求的大小,以防止資源佔用。預設限制為 10MB,但您可以根據需要進一步減少它。

代碼:

要限制請求正文大小,請使用 MaxBytesReader 函數。以下是範例:

r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize) 
err := r.ParseForm()
if err != nil {
     // Redirect or set error status code.
     return
}

錯誤處理:

當請求正文大小超過限制時,MaxBytesReader 在回應上設定一個標誌。當處理程序返回時會檢查此標誌。如果設定了該標誌,伺服器將關閉連線並且不讀取剩餘的請求正文。因此,無需在程式碼中明確處理錯誤。

安全注意事項:

要防止惡意客戶端,請設定 Server.ReadTimeout、Server.WriteTimeout以及 Server.MaxHeaderBytes。

全域限制:

如果要為所有處理程序設定請求正文限制,請使用自訂處理程序包裝根處理程序,如下所示:

type maxBytesHandler struct {
     h http.Handler
     n int64
 }

func (h *maxBytesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
     r.Body = http.MaxBytesReader(w, r.Body, h.n) 
     h.h.ServeHTTP(w, r)
 }

然後,包裝根呼叫ListenAndServe或配置時的處理程序

結論:

透過使用MaxBytesReader 並應用適當的安全配置,您可以有效限制Go 應用程式中的請求正文大小,以防止資源耗盡。

以上是為了更好的資源管理,你應該限制 Go 中的請求正文大小嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn