TsgcWebSocketHTTPServer › 属性 › MaxRequestBodySize
入站 HTTP 请求体的最大字节大小;保护服务器免受内存耗尽攻击。
property MaxRequestBodySize: Int64 read GetMaxRequestBodySize write SetMaxRequestBodySize;
67108864(64 MB)。使用 0 表示无限制。
MaxRequestBodySize 限制入站 HTTP 请求体的大小。如果没有这样的限制,客户端可以声明一个巨大的 Content-Length 并向服务器流式传输无限制的请求体,以耗尽其内存。当请求声明的请求体大小超过此限制时,服务器会以 HTTP 状态 413(负载过大)拒绝该请求,而不是缓冲它,因此该尝试会在任何大型分配发生之前被阻止。
默认值 64 MB 对绝大多数应用程序而言都是安全的。如果您的应用程序确实需要通过 HTTP POST 接受大型上传,可以调高该值;或者在面向公网的服务器上调低该值以收紧内存限制。值为 0 会完全禁用该限制(不建议在可从不受信任网络访问的服务器上使用)。此限制独立于 MaxMessageSize,后者限制的是入站 WebSocket 消息,而不是 HTTP 请求体。
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
// reject any HTTP request whose body is larger than 16 MB (HTTP 413)
oServer.MaxRequestBodySize := 16 * 1024 * 1024;
oServer.Active := true;