Eine der Sicherheitsmaßnahmen in meinem Webservice ist das Blockieren großer Datei-Uploads.
Ich möchte eine Datei-Upload-Anfrage so schnell wie möglich abbrechen, wenn zu große Dateien gesendet werden.Frühester Zeitpunkt, um die POST-Anfrage im Webservice abzubrechen?
Da die Anfragen mit der Datei-Uploads sowieso die größten sein werden, ich habe zur Zeit diesen Code in dem BeforeDispatch
Handler der TWebModule
:
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;
Ist der Before Handler zum frühestmöglichen Zeitpunkt für Dieser Test, oder gibt es einen besseren Ort?
Der Webservice ist um einen TIdHTTPWebBrokerBridge
gebaut (= class(TIdCustomHTTPServer)
finden IdHTTPWebBrokerBridge.pas
)
Wenn 'OnHeadersAvailable'' VContinue = False' setzt, können Sie das Ereignis 'TIdCustomHTTPServer.OnHeadersBlocked' verwenden, um die Antwort anzupassen, die an den Client zurückgesendet wird. Standardmäßig wird eine '403 Forbidden' Antwort gesendet. In diesem Fall wäre '413 Payload Too Large' angemessener. –