TsgcWebSocketHTTPServer › Proprietà › HTTP3Options
Abilita il listener HTTP/3 (QUIC) che gestisce le richieste HTTP insieme a HTTP/1.1 e HTTP/2, tramite UDP.
property HTTP3Options: TsgcWSHTTP3Server_Options read FHTTP3Options write SetHTTP3Options;
Enabled=False, Port=0, AltSvc.Enabled=True
Per impostazione predefinita il server non è in ascolto per HTTP/3. Impostare HTTP3Options.Enabled su True per aprire un listener QUIC accanto al listener TCP/TLS esistente; è necessario il certificato e la chiave già configurati in SSLOptions (CertFile/KeyFile; una chiave privata cifrata non è supportata per questo listener) e OpenSSL 3.5 o versione successiva. Port imposta la porta UDP su cui il listener resta in ascolto; lasciarla a 0 per riutilizzare la porta già impostata in SSLOptions.Port. Le richieste che arrivano tramite HTTP/3 vengono instradate attraverso lo stesso meccanismo di invio dei file statici DocumentRoot e gli stessi eventi OnCommandGet e OnCommandOther utilizzati per HTTP/1.1 e HTTP/2, quindi il codice di gestione delle richieste già esistente funziona per lo più senza modifiche; due differenze di cui tenere conto: ARequestInfo.Version riporta 'HTTP/3' per queste richieste, e il parametro AContext passato al gestore è nil (non esiste una connessione TCP dietro una richiesta HTTP/3), quindi qualsiasi codice che lo dereferenzia deve gestire questo caso. AltSvc.Enabled (attivo per impostazione predefinita) fa sì che le risposte HTTPS includano un'intestazione Alt-Svc che pubblicizza l'endpoint HTTP/3 non appena il listener è attivo, in modo che browser e client possano scoprirlo e passare autonomamente a esso; si combina con la pubblicizzazione Alt-Svc di HTTP/2 in un'unica intestazione quando entrambi sono abilitati. Authentication.Basic viene applicata alle richieste HTTP/3; in questa versione le sessioni, l'autenticazione OAuth2 e JWT e l'inoltro delle richieste non vengono applicati a esse. Se il listener HTTP/3 non riesce ad avviarsi (porta già in uso, certificato mancante o non valido, OpenSSL 3.5 non disponibile), il normale server HTTP/1.1 e HTTP/2 continua a funzionare senza essere interessato e l'errore viene segnalato tramite OnException. La compilazione con supporto HTTP/3 richiede l'abilitazione della direttiva del compilatore HTTP3 pack.
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;