我的网络服务中的一项“安全措施”是阻止大型文件上传 我希望在发送过大的文件时尽快取消文件上传请求。
由于文件上传的请求无论如何都是最大的,我目前在BeforeDispatch
的{{1}}处理程序中有这段代码:
TWebModule
BeforeDispatch处理程序是此测试的最早阶段,还是有更好的地方?
网络服务围绕procedure TWebModuleWebServices.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
// Request that are too large are going to be dropped silently:
if Request.ContentLength > cMaxContentSize then
begin
Handled := true;
Exit;
end;
(= TIdHTTPWebBrokerBridge
,见class(TIdCustomHTTPServer)
)
答案 0 :(得分:1)
使用Indy,TCustomWebDispatcher.BeforeDispatch
事件为时已晚,因为已在TIdCustomHttpServer.DoExecute
中检索了帖子数据流。您可以使用先前触发的TIdCustomHTTPServer.OnHeadersAvailable
事件,通过将VContinueProcessing
设置为False
来避免此事件。