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
Aggiungere interattività lato server in Blazor 8
Creare moduli CSS in React
Creare alias per tipi generici e tuple in C#
Routing statico e PreRendering in una Blazor Web App
Le novità di Angular: i miglioramenti alla CLI
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Generare file per il download da Blazor WebAssembly
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Eseguire una GroupBy per entity in Entity Framework
Sfruttare lo streaming di una chiamata Http da Blazor
Effettuare il binding di date in Blazor
Eseguire attività con Azure Container Jobs
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)