HTTP/3 è la nuova versione del protocollo alla base del World Wide Web, basato sul nuovo transport protocol chiamato QUIC, e permette di velocizzare l'handshake delle richieste grazie all'uso di UDP invece che TCP.
Sebbene non sia ancora ufficialmente approvato - è ancora nello stato di proposed standard - è già supportato da un gran numero di browser, a iniziare da quelli basati su Chromium (Chrome, Edge, Opera), proseguendo con Firefox, fino a Safari, sebbene per quest'ultimo sia disabilitato per default.
Con ASP.NET Core 7.0 possiamo attivare HTTP/3 su Kestrel tramite le opzioni:
builder.WebHost.ConfigureKestrel((context, options) => { options.ListenAnyIP(5001, listenOptions => { listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3; listenOptions.UseHttps(); }); });
Come possiamo testare che questo protocollo sia effettivamente attivo? Come prima cosa possiamo creare un endpoint che ci restituisca il protocollo utilizzato per la connessione:
app.MapGet("/protocol", (HttpContext context) => { return context.Request.Protocol; });
Se a questo punto visitassimo questo URL con un browser, vedremmo solo "HTTP/2" come risposta. La ragione è che i browser non supportano HTTP/3 con i certificati self-signed, come è il caso di Kestrel quando è in esecuzione nel nostro ambiente di sviluppo.
Tuttavia, possiamo "forzare" l'utilizzo di HTTP/3 nel nostro ambiente di test utilizzando una chiamata HttpClient da una Console Application:
using System.Net; System.AppContext.SetSwitch("System.Net.SocketsHttpHandler.Http3Support", true); var client = new HttpClient(); client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrHigher; client.DefaultRequestVersion = HttpVersion.Version30; Console.WriteLine(await client.GetStringAsync("https://localhost:5001/protocol"));
Eseguendo la nostra applicazione, vedremo finalmente il risultato che ci aspettiamo:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare un KeyedService di default in ASP.NET Core 8
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Reactive form tipizzati con modellazione del FormBuilder in Angular
Miglioramenti nell'accessibilità con Angular CDK
Miglioramenti agli screen reader e al contrasto in Angular
Definire lo stile CSS in base alle dimensioni del container
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Effettuare il pull di git LFS in un workflow di GitHub
Workflow di continuous deployment tramite pull request label in GitHub
Eseguire attività pianificate con Azure Container Jobs