TsgcWebSocketHTTPServerWłaściwości › HTTP3Options

HTTP3Options Właściwość

Włącza nasłuch HTTP/3 (QUIC), który obsługuje żądania HTTP równolegle z HTTP/1.1 i HTTP/2, przez UDP.

Składnia

property HTTP3Options: TsgcWSHTTP3Server_Options read FHTTP3Options write SetHTTP3Options;

Wartość domyślna

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

Uwagi

Domyślnie serwer nie nasłuchuje HTTP/3. Ustaw HTTP3Options.Enabled na True, aby otworzyć nasłuch QUIC obok istniejącego nasłuchu TCP/TLS; wymaga to certyfikatu i klucza już skonfigurowanych w SSLOptions (CertFile/KeyFile; zaszyfrowany klucz prywatny nie jest obsługiwany dla tego nasłuchu) oraz OpenSSL 3.5 lub nowszego. Port ustawia port UDP, z którym wiąże się nasłuch; pozostaw 0, aby ponownie wykorzystać port już ustawiony w SSLOptions.Port. Żądania napływające przez HTTP/3 są przekazywane przez ten sam mechanizm obsługi plików statycznych DocumentRoot oraz te same zdarzenia OnCommandGet i OnCommandOther używane dla HTTP/1.1 i HTTP/2, więc istniejący kod obsługi żądań w większości po prostu działa; dwie różnice, o których należy pamiętać: ARequestInfo.Version zgłasza 'HTTP/3' dla tych żądań, a parametr AContext przekazywany do procedury obsługi ma wartość nil (za żądaniem HTTP/3 nie stoi żadne połączenie TCP), więc każdy kod, który go wyłuskuje, musi uwzględniać ten przypadek. AltSvc.Enabled (domyślnie włączone) sprawia, że odpowiedzi HTTPS niosą nagłówek Alt-Svc ogłaszający punkt końcowy HTTP/3 po uruchomieniu nasłuchu, dzięki czemu przeglądarki i klienci mogą go wykryć i samodzielnie się na niego przełączyć; łączy się on z ogłoszeniem Alt-Svc dla HTTP/2 w jeden nagłówek, gdy oba są włączone. Authentication.Basic jest wymuszane dla żądań HTTP/3; uwierzytelnianie sesyjne, OAuth2 i JWT oraz przekazywanie żądań nie są dla nich stosowane w tej wersji. Jeśli nasłuch HTTP/3 nie uruchomi się (port jest zajęty, certyfikat jest brakujący lub nieprawidłowy, OpenSSL 3.5 jest niedostępny), zwykły serwer HTTP/1.1 i HTTP/2 działa dalej bez zakłóceń, a błąd jest zgłaszany przez OnException. Kompilacja z obsługą HTTP/3 wymaga włączenia dyrektywy kompilatora pakietu HTTP3.

Przykład


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;

Wróć do Właściwości