问题:
是否建议进一步限制请求正文的大小使用时的形式去吗?
答案:
是的,建议限制表单请求的大小,以防止资源占用。默认限制为 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中文网其他相关文章!