首頁 >後端開發 >Golang >如何有效限制 Go 的 HTTP Server 中 POST 請求的大小?

如何有效限制 Go 的 HTTP Server 中 POST 請求的大小?

Patricia Arquette
Patricia Arquette原創
2024-12-05 10:48:10729瀏覽

How Can I Effectively Limit the Size of POST Requests in Go's HTTP Server?

考慮 Golang HTTP 請求中的正文大小限制

管理 POST 表單請求的大小對於防止伺服器資源耗盡至關重要。預設情況下,Golang 將這些請求限制為 10MB。但是,如果需要進一步限制此限制,則必須謹慎處理。

一個可行的方法是利用 r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize) 方法在 ServeHTTP 函數中。這設定了請求正文的最大位元組限制,之後伺服器停止讀取並關閉連線。隨後的 r.ParseForm() 呼叫成功執行。

但是,由於 Go 處理 HTTP 請求的方式,遇到此限制後回傳錯誤可能不會關閉連線。為了確保連線正確關閉,您可以設定錯誤狀態碼並使用 http.Error(w, "", http.StatusRequestEntityTooLarge) 進行對應回應。

或者,您可以使用自訂包裝根處理程序MaxBytesHandler 在委託給根處理程序之前設定限制。這允許在所有處理程序中全域應用限制。

為了最大限度地提高安全性,建議設定其他伺服器參數,例如 ReadTimeout、WriteTimeout 和 MaxHeaderBytes,以有效處理惡意用戶端。

請記住,這些措施的目標是防止惡意或設計不良的客戶端過度消耗資源,同時確保伺服器的穩定性和效能。透過實作這些技術,您可以有效地管理 Golang 中 HTTP 表單請求的大小。

以上是如何有效限制 Go 的 HTTP Server 中 POST 請求的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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