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
Migrare una service connection a workload identity federation in Azure DevOps
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Eseguire operazioni sui blob con Azure Storage Actions
Creare alias per tipi generici e tuple in C#
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Triggerare una pipeline su un altro repository di Azure DevOps
Generare velocemente pagine CRUD in Blazor con QuickGrid
Gestione degli stili CSS con le regole @layer
Recuperare l'ultima versione di una release di GitHub
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Simulare Azure Cosmos DB in locale con Docker
I più letti di oggi
- Simulare Azure Cosmos DB in locale con Docker
- Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2024 - Milano
- .NET Conference Italia 2023 - Milano e Online