TsgcWebSocketHTTPServer › Proprié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, Host='', 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, plus Password lorsque la clé privée est chiffrée) ainsi qu'OpenSSL 3.5 ou une version ultérieure. L'écouteur HTTP/3 lit SSLOptions.Password exactement comme le fait l'écouteur HTTPS, un même ensemble CertFile/KeyFile/Password sert donc à la fois l'écouteur TCP/TLS et l'écouteur HTTP/3. 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. Host définit l'adresse à laquelle l'écouteur se lie ; laissez-le vide, la valeur par défaut, pour se lier à toutes les interfaces. Il accepte une adresse IPv4, une adresse IPv6 ou un nom d'hôte. L'écouteur HTTP/3 possède son propre socket UDP unique et ne lit pas Bindings, cette propriété ne peut donc pas servir à placer l'écouteur sur une interface donnée. 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