問題:
是否建議進一步限制請求正文的大小使用時的形式去嗎?
答案:
是的,建議限製表單請求的大小,以防止資源佔用。預設限制為 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中文網其他相關文章!