TsgcWebSocketHTTPServerPropiedades › HTTP3Options

HTTP3Options Propiedad

Habilita el listener HTTP/3 (QUIC) que sirve solicitudes HTTP junto con HTTP/1.1 y HTTP/2, sobre UDP.

Sintaxis

property HTTP3Options: TsgcWSHTTP3Server_Options read FHTTP3Options write SetHTTP3Options;

Valor Predeterminado

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

Observaciones

De forma predeterminada, el servidor no escucha en HTTP/3. Establezca HTTP3Options.Enabled en True para abrir un listener QUIC junto al listener TCP/TLS existente; requiere el certificado y la clave ya configurados en SSLOptions (CertFile/KeyFile — no se admite una clave privada cifrada para este listener) y OpenSSL 3.5 o posterior. Port establece el puerto UDP al que se vincula el listener; déjelo en 0 para reutilizar el puerto ya establecido en SSLOptions.Port. Las solicitudes que llegan por HTTP/3 se despachan a través del mismo servicio de archivos estáticos de DocumentRoot y de los mismos eventos OnCommandGet y OnCommandOther utilizados para HTTP/1.1 y HTTP/2, por lo que el código de gestión de solicitudes existente en general sigue funcionando sin cambios; hay dos diferencias a tener en cuenta: ARequestInfo.Version informa 'HTTP/3' para estas solicitudes, y el parámetro AContext pasado al controlador es nil (no hay ninguna conexión TCP detrás de una solicitud HTTP/3), por lo que cualquier código que lo desreferencie debe contemplar este caso. AltSvc.Enabled (habilitado de forma predeterminada) hace que las respuestas HTTPS incluyan una cabecera Alt-Svc que anuncia el endpoint HTTP/3 en cuanto el listener está en ejecución, de modo que los navegadores y clientes puedan descubrirlo y cambiar a él por su cuenta; se combina con el anuncio Alt-Svc de HTTP/2 en una única cabecera cuando ambos están habilitados. Authentication.Basic se aplica en las solicitudes HTTP/3; en esta versión no se les aplican la autenticación por sesiones, OAuth2 y JWT, ni el reenvío de solicitudes. Si el listener HTTP/3 no logra iniciarse — puerto en uso, certificado ausente o no válido, OpenSSL 3.5 no disponible — el servidor HTTP/1.1 y HTTP/2 habitual sigue funcionando sin verse afectado y el fallo se notifica mediante OnException. Compilar con soporte para HTTP/3 requiere tener habilitada la directiva de compilación HTTP3 pack.

Ejemplo


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;

Volver a Propiedades