TsgcWebSocketHTTPServerPropriétés › HTTP3Options

HTTP3Options Propriété

Active l'écouteur HTTP/3 (QUIC) qui traite les requêtes HTTP en plus de HTTP/1.1 et HTTP/2, sur UDP.

Syntaxe

property HTTP3Options: TsgcWSHTTP3Server_Options read FHTTP3Options write SetHTTP3Options;

Valeur par défaut

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

Remarques

Par défaut, le serveur n'écoute pas les requêtes HTTP/3. Définissez HTTP3Options.Enabled à True pour ouvrir un écouteur QUIC en plus de l'écouteur TCP/TLS existant ; cela nécessite le certificat et la clé déjà configurés dans SSLOptions (CertFile/KeyFile — une clé privée chiffrée n'est pas prise en charge pour cet écouteur) ainsi qu'OpenSSL 3.5 ou une version ultérieure. Port définit le port UDP sur lequel l'écouteur se lie ; laissez-le à 0 pour réutiliser le port déjà défini dans SSLOptions.Port. Les requêtes reçues via HTTP/3 sont acheminées via le même mécanisme de service de fichiers statiques DocumentRoot et les mêmes événements OnCommandGet et OnCommandOther utilisés pour HTTP/1.1 et HTTP/2, de sorte que le code de traitement des requêtes existant fonctionne pour l'essentiel sans modification ; deux différences à prendre en compte dans le code : ARequestInfo.Version indique 'HTTP/3' pour ces requêtes, et le paramètre AContext transmis au gestionnaire vaut nil (il n'y a pas de connexion TCP derrière une requête HTTP/3), donc tout code qui le déréférence doit se prémunir contre ce cas. AltSvc.Enabled (activé par défaut) fait en sorte que les réponses HTTPS portent un en-tête Alt-Svc annonçant le point de terminaison HTTP/3 une fois l'écouteur démarré, afin que les navigateurs et les clients puissent le découvrir et basculer d'eux-mêmes ; il se combine avec l'annonce Alt-Svc de HTTP/2 en un seul en-tête lorsque les deux sont activés. Authentication.Basic est appliquée aux requêtes HTTP/3 ; les sessions, l'authentification OAuth2 et JWT ainsi que le transfert de requêtes ne leur sont pas appliqués dans cette version. Si l'écouteur HTTP/3 ne parvient pas à démarrer — port déjà utilisé, certificat manquant ou invalide, OpenSSL 3.5 non disponible — le serveur HTTP/1.1 et HTTP/2 habituel continue de fonctionner normalement et l'échec est signalé via OnException. La compilation avec la prise en charge de HTTP/3 nécessite d'activer la directive de compilation du pack HTTP3.

Exemple


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;

Retour aux propriétés