在webservice中放弃POST请求的最早时刻?

时间:2016-04-29 10:04:04

标签: web-services delphi indy indy10 delphi-10-seattle

我的网络服务中的一项“安全措施”是阻止大型文件上传 我希望在发送过大的文件时尽快取消文件上传请求。

由于文件上传的请求无论如何都是最大的,我目前在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)

1 个答案:

答案 0 :(得分:1)

使用Indy,TCustomWebDispatcher.BeforeDispatch事件为时已晚,因为已在TIdCustomHttpServer.DoExecute中检索了帖子数据流。您可以使用先前触发的TIdCustomHTTPServer.OnHeadersAvailable事件,通过将VContinueProcessing设置为False来避免此事件。