TsgcWebSocketHTTPServer속성 › HTTP3Options

HTTP3Options 속성

HTTP/1.1 및 HTTP/2와 함께 UDP를 통해 HTTP 요청을 처리하는 HTTP/3(QUIC) 리스너를 활성화합니다.

구문

property HTTP3Options: TsgcWSHTTP3Server_Options read FHTTP3Options write SetHTTP3Options;

기본값

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

설명

기본적으로 서버는 HTTP/3을 수신 대기하지 않습니다. 기존 TCP/TLS 리스너와 함께 QUIC 리스너를 열려면 HTTP3Options.EnabledTrue로 설정하십시오. 이 리스너는 SSLOptions에 이미 구성된 인증서와 키가 필요하며(CertFile/KeyFile — 이 리스너에서는 암호화된 개인 키를 지원하지 않습니다), OpenSSL 3.5 이상이 필요합니다. Port는 리스너가 바인딩되는 UDP 포트를 설정합니다. SSLOptions.Port에 이미 설정된 포트를 재사용하려면 0으로 두십시오. HTTP/3을 통해 들어오는 요청은 HTTP/1.1 및 HTTP/2에 사용되는 것과 동일한 DocumentRoot 정적 파일 제공 및 동일한 OnCommandGet, OnCommandOther 이벤트를 통해 디스패치되므로 기존 요청 처리 코드는 대부분 그대로 작동합니다. 다만 다음 두 가지 차이점에 유의해야 합니다: 이러한 요청에 대해 ARequestInfo.Version'HTTP/3'을 보고하며, 핸들러에 전달되는 AContext 매개변수는 nil입니다(HTTP/3 요청 뒤에는 TCP 연결이 없기 때문입니다). 따라서 이를 역참조하는 코드는 이 경우를 방어해야 합니다. AltSvc.Enabled(기본적으로 켜짐)는 리스너가 실행 중일 때 HTTPS 응답에 HTTP/3 엔드포인트를 광고하는 Alt-Svc 헤더를 포함시켜, 브라우저와 클라이언트가 이를 발견하고 스스로 전환할 수 있게 합니다. 두 기능이 모두 활성화된 경우, 이는 HTTP/2 Alt-Svc 광고와 결합되어 하나의 헤더로 전달됩니다. Authentication.Basic은 HTTP/3 요청에 적용되지만, 세션, OAuth2 및 JWT 인증과 요청 전달은 이번 버전에서는 적용되지 않습니다. 포트 사용 중, 인증서 누락 또는 무효, OpenSSL 3.5 미사용 등의 이유로 HTTP/3 리스너 시작에 실패하면 일반 HTTP/1.1 및 HTTP/2 서버는 영향을 받지 않고 계속 실행되며, 실패는 OnException을 통해 보고됩니다. HTTP/3 지원을 포함하여 빌드하려면 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;

속성으로 돌아가기