질문:
크기를 더 제한하는 것이 바람직합니까? 사용할 때의 형태 갈까요?
답변:
예, 리소스 호깅을 방지하기 위해 양식 요청의 크기를 제한하는 것이 좋습니다. 기본 제한은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!