TsgcWebSocketHTTPServerProperties › HTTP3Options

HTTP3Options Eigenschap

Schakelt de HTTP/3-listener (QUIC) in die HTTP-verzoeken over UDP verwerkt naast HTTP/1.1 en HTTP/2.

Syntaxis

property HTTP3Options: TsgcWSHTTP3Server_Options read FHTTP3Options write SetHTTP3Options;

Standaardwaarde

Enabled=False, Port=0, AltSvc.Enabled=True

Opmerkingen

Standaard luistert de server niet naar HTTP/3. Stel HTTP3Options.Enabled in op True om naast de bestaande TCP/TLS-listener een QUIC-listener te openen; dit vereist het certificaat en de sleutel die al zijn geconfigureerd in SSLOptions (CertFile/KeyFile, een versleutelde private key wordt voor deze listener niet ondersteund) en OpenSSL 3.5 of hoger. Port stelt de UDP-poort in waaraan de listener wordt gebonden; laat deze op 0 staan om de poort te hergebruiken die al is ingesteld in SSLOptions.Port. Verzoeken die via HTTP/3 binnenkomen, worden afgehandeld via dezelfde DocumentRoot-bestandsserving en dezelfde OnCommandGet- en OnCommandOther-events die worden gebruikt voor HTTP/1.1 en HTTP/2, zodat bestaande code voor het verwerken van verzoeken meestal gewoon werkt; er zijn twee verschillen om rekening mee te houden: ARequestInfo.Version geeft voor deze verzoeken 'HTTP/3' terug, en de parameter AContext die aan de handler wordt doorgegeven is nil (er is geen TCP-verbinding achter een HTTP/3-verzoek), dus code die deze dereferentieert moet hiermee rekening houden. AltSvc.Enabled (standaard ingeschakeld) zorgt ervoor dat HTTPS-antwoorden een Alt-Svc-header bevatten die het HTTP/3-eindpunt adverteert zodra de listener actief is, zodat browsers en clients dit zelf kunnen ontdekken en overschakelen; deze wordt gecombineerd met de HTTP/2 Alt-Svc-advertentie tot een enkele header wanneer beide zijn ingeschakeld. Authentication.Basic wordt afgedwongen op HTTP/3-verzoeken; sessies, OAuth2- en JWT-authenticatie en het doorsturen van verzoeken worden er in deze versie niet op toegepast. Als de HTTP/3-listener niet kan starten (poort in gebruik, ontbrekend of ongeldig certificaat, OpenSSL 3.5 niet beschikbaar), blijft de reguliere HTTP/1.1- en HTTP/2-server zonder gevolgen doorlopen en wordt de fout gerapporteerd via OnException. Bouwen met ondersteuning voor HTTP/3 vereist dat de compilerdirectief HTTP3 pack is ingeschakeld.

Voorbeeld


oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.SSL := true;
oServer.SSLOptions.CertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.KeyFile := 'c:\certificates\mycert.pem';
oServer.HTTP3Options.Enabled := true;
oServer.Active := true;

Terug naar Properties