TsgcWebSocketHTTPServerプロパティ › HTTP3Options

HTTP3Options プロパティ

UDP 上で HTTP/1.1 および HTTP/2 と並行して HTTP リクエストを処理する HTTP/3 (QUIC) リスナーを有効にします。

構文

property HTTP3Options: TsgcWSHTTP3Server_Options read FHTTP3Options write SetHTTP3Options;

デフォルト値

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

解説

デフォルトでは、サーバーは HTTP/3 をリッスンしません。HTTP3Options.EnabledTrue に設定すると、既存の TCP/TLS リスナーと並行して QUIC リスナーが開かれます。これには SSLOptions で既に設定されている証明書と鍵(CertFile/KeyFile — このリスナーでは暗号化された秘密鍵はサポートされていません)、および OpenSSL 3.5 以降が必要です。Port はリスナーがバインドする UDP ポートを設定します。0 のままにすると、SSLOptions.Port で既に設定されているポートが再利用されます。HTTP/3 経由で到着したリクエストは、HTTP/1.1 および HTTP/2 で使用されるものと同じ DocumentRoot の静的ファイル配信、および同じ OnCommandGetOnCommandOther イベントを通じてディスパッチされるため、既存のリクエスト処理コードはほぼそのまま動作します。ただし、コード上で対応が必要な違いが 2 点あります。ARequestInfo.Version はこれらのリクエストに対して 'HTTP/3' を報告すること、そして、ハンドラーに渡される AContext パラメータが nil になること(HTTP/3 リクエストの背後には TCP 接続が存在しないため)です。そのため、このパラメータを参照するコードはこのケースに備えてガードする必要があります。AltSvc.Enabled(デフォルトで有効)を設定すると、リスナーの稼働中は HTTPS レスポンスに HTTP/3 エンドポイントをアドバタイズする Alt-Svc ヘッダーが付与されるため、ブラウザやクライアントはこれを検出して自動的に切り替えることができます。両方が有効な場合、これは HTTP/2 の Alt-Svc アドバタイズと 1 つのヘッダーに統合されます。Authentication.Basic は HTTP/3 リクエストに対して強制されます。セッション、OAuth2 および JWT 認証、およびリクエスト転送は、このバージョンではこれらのリクエストには適用されません。HTTP/3 リスナーの起動に失敗した場合(ポートが使用中、証明書が存在しないまたは無効、OpenSSL 3.5 が利用できないなど)、通常の HTTP/1.1 および HTTP/2 サーバーは影響を受けずに動作を継続し、失敗は OnException を通じて報告されます。HTTP/3 サポートを含めてビルドするには、HTTP3 パック コンパイラディレクティブを有効にする必要があります。

使用例


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;

プロパティに戻る