TsgcHTTP3Client › Ereignisse › OnHTTP3BeforeRequest

OnHTTP3BeforeRequest Ereignis

Wird ausgelöst, bevor eine Anfrage gesendet wird, sodass die Header-Liste überprüft oder geändert werden kann.

Syntax

TsgcHTTP3BeforeRequestEvent = procedure(Sender: TObject;

  var Headers: TStringList) of object;



property OnHTTP3BeforeRequest: TsgcHTTP3BeforeRequestEvent

  read FOnHTTP3BeforeRequest write FOnHTTP3BeforeRequest;

Parameter

NameTypBeschreibung
SenderTObjectDie TsgcHTTP3Client-Instanz, die das Ereignis ausgelöst hat.
Headersvar TStringListDie vollständige Header-Liste, die kodiert werden soll, einschließlich Pseudo-Header, als Name: Value-Zeilen. Ändern Sie sie direkt, um Header hinzuzufügen, zu ändern oder zu entfernen.

Hinweise

OnHTTP3BeforeRequest wird bei jeder Anfrage ausgelöst, unmittelbar nachdem der Client die Header-Liste aufgebaut hat und bevor sie QPACK-kodiert und gesendet wird. Die Liste wird per Referenz übergeben und ist vollständig veränderbar, was dies zum einzigen Hook für alles Header-bezogene macht, für das es keine eigene Eigenschaft gibt.

Der übliche Grund, es zu behandeln, ist die Authentifizierung: Fügen Sie einen authorization-Header hinzu, der ein Bearer-Token oder Basic-Anmeldeinformationen trägt. Es eignet sich ebenso für Cookies, Korrelations-IDs, API-Schlüssel und jeden benutzerdefinierten Header, den Ihre API erwartet.

Die Liste enthält neben den gewöhnlichen Headern auch die HTTP/3-Pseudo-Header :method, :scheme, :authority und :path. Pseudo-Header müssen am Anfang des Abschnitts bleiben und dürfen nicht doppelt vorkommen, hängen Sie Ihre eigenen Header daher an, statt sie oben einzufügen, und entfernen Sie die Pseudo-Header nicht.

Header-Namen müssen in HTTP/3 kleingeschrieben sein (RFC 9114 Abschnitt 4.2). Ein Name in Großbuchstaben ist eine fehlerhafte Anfrage und der Server wird sie ablehnen.

Das Ereignis wird auf dem Thread ausgelöst, der die Anfrage sendet, bei einem Async-Verb also auf dem Hintergrund-Worker-Thread.

Beispiel



procedure TfrmMain.OnBeforeRequestEvent(Sender: TObject;

  var Headers: TStringList);

begin

  Headers.Add('authorization: Bearer ' + vToken);

  Headers.Add('x-request-id: ' + vRequestId);

end;

Zurück zu Ereignissen