TsgcHTTPServer › Özellikler › HTTP3Options

HTTP3Options Özellik

HTTP/1.1 ve HTTP/2'nin yanı sıra UDP üzerinden HTTP isteklerini sunan HTTP/3 (QUIC) dinleyicisini etkinleştirir.

Sözdizimi

property HTTP3Options: TsgcWSHTTP3Server_Options read FHTTP3Options write SetHTTP3Options;

Varsayılan Değer

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

Remarks

Varsayılan olarak sunucu HTTP/3'ü dinlemez. Mevcut TCP/TLS dinleyicisinin yanında bir QUIC dinleyicisi açmak için HTTP3Options.Enabled'ı True olarak ayarlayın; bu, SSLOptions'ta zaten yapılandırılmış sertifika ve anahtarı gerektirir (CertFile/KeyFile ve özel anahtar şifrelenmişse ayrıca Password) ve OpenSSL 3.5 veya üzerini gerektirir. SSLOptions.IOHandler, iohOpenSSL veya iohNativeTLS olmalıdır; başka bir değer, dinleyici başladığında hata verir. iohNativeTLS ile HTTP/3 dinleyicisi, TLS 1.3 el sıkışması yerel TLS motoru üzerinde ve paket koruması sgcCrypto üzerinde olacak şekilde sgc QUIC motorunda çalışır; bu nedenle hiç OpenSSL gerekmez, bkz. OpenSSL Olmadan Çalıştırma. HTTP/3 dinleyicisi, SSLOptions.Password değerini tam olarak HTTPS dinleyicisinin okuduğu gibi okur; bu nedenle tek bir CertFile/KeyFile/Password kümesi hem TCP/TLS dinleyicisine hem de HTTP/3 dinleyicisine hizmet eder. Port, dinleyicinin bağlandığı UDP portunu ayarlar; SSLOptions.Port'ta zaten ayarlanan portu yeniden kullanmak için 0'da bırakın. Host, dinleyicinin bağlandığı adresi ayarlar; her arabirime bağlanmak için varsayılan değeri olan boş bırakın. Bir IPv4 adresi, bir IPv6 adresi veya bir sunucu adı kabul eder. HTTP/3 dinleyicisinin kendine ait tek bir UDP soketi vardır ve Bindings özelliğini okumaz; bu nedenle dinleyiciyi tek bir arabirime yerleştirmek için bu özellik kullanılamaz. HTTP/3 üzerinden gelen istekler, HTTP/1.1 ve HTTP/2 için kullanılan aynı DocumentRoot statik dosya sunumu ve aynı OnCommandGet ve OnCommandOther olayları aracılığıyla gönderilir, bu nedenle mevcut istek işleme kodu çoğunlukla olduğu gibi çalışır; kod için dikkat edilmesi gereken iki fark vardır: ARequestInfo.Version bu istekler için 'HTTP/3' bildirir ve işleyiciye geçirilen AContext parametresi nil'dir (bir HTTP/3 isteğinin arkasında TCP bağlantısı yoktur), bu nedenle onu dereference eden herhangi bir kod bu durumu kontrol etmelidir. AltSvc.Enabled (varsayılan olarak açık), dinleyici çalışmaya başladıktan sonra HTTPS yanıtlarının HTTP/3 uç noktasını duyuran bir Alt-Svc başlığı taşımasını sağlar, böylece tarayıcılar ve istemciler onu keşfedip kendi başlarına geçebilir; her ikisi de etkinleştirildiğinde HTTP/2 Alt-Svc duyurusuyla tek bir başlıkta birleşir. Authentication.Basic, HTTP/3 istekleri üzerinde uygulanır. Oturumlar, OAuth2, JWT ve WebAuthn kimlik doğrulaması ile istek yönlendirme, bir HTTP/3 isteğinin sahip olmadığı TCP bağlantı durumuna ihtiyaç duyar, bu nedenle bu taşıma üzerinde değerlendirilemez ve bu şemalardan biriyle yapılandırılmış bir sunucu, HTTP/3 isteklerini kimliği doğrulanmamış şekilde sunmak yerine 401 ile reddeder. HTTP/3 dinleyicisinin kimliği doğrulanmış istekleri sunması gerekiyorsa Basic kimlik doğrulamasını yapılandırın. HTTP/3 dinleyicisi başlatılamazsa — port kullanımda, sertifika eksik veya geçersiz, OpenSSL 3.5 mevcut değil — normal HTTP/1.1 ve HTTP/2 sunucusu etkilenmeden çalışmaya devam eder ve hata OnException aracılığıyla bildirilir. HTTP/3 desteğiyle derleme yapmak, HTTP3 pack derleyici yönergesinin etkinleştirilmesini gerektirir.

Örnek


oServer := TsgcHTTPServer.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;

Özelliklere Dön