考慮 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中文網其他相關文章!