HTTP/3 è la terza versione principale del protocollo HTTP. Mantiene le stesse semantiche di HTTP/1.1 e HTTP/2 (metodi, codici di stato, header), quindi le applicazioni esistenti si comportano allo stesso modo, ma cambia il trasporto: invece di funzionare su TCP, HTTP/3 funziona su QUIC, un trasporto moderno costruito sopra UDP.
HTTP/2 ha risolto il multiplexing delle richieste a livello applicativo, ma tutti i suoi stream condividono comunque un'unica connessione TCP. Quando un pacchetto TCP viene perso, ogni stream deve attendere la ritrasmissione (head-of-line blocking a livello di trasporto). QUIC sposta il multiplexing degli stream nel trasporto, quindi un pacchetto perso blocca solo lo stream a cui appartiene e gli altri stream continuano a fluire.
HTTP/3 è definito in RFC 9114, QUIC in RFC 9000 e QPACK in RFC 9204.
HTTP/3 è disponibile nell'edizione Enterprise, richiede la define SGC_HTTP3 e utilizza per impostazione predefinita il supporto QUIC nativo fornito da OpenSSL 3.5 o successivo. WebTransport richiede inoltre il motore QUIC integrato di OpenSSL. Con l'IOHandler TLS impostato su iohNativeTLS, HTTP/3 funziona senza OpenSSL sul motore QUIC sgc, vedere SSL senza OpenSSL.
Il server si associa all'indirizzo indicato in Host. Un valore che contiene i due punti è un letterale IPv6, mentre qualsiasi altro valore, un letterale IPv4 o un nome host, viene risolto su entrambe le famiglie di indirizzi. Un Host vuoto si associa al wildcard dual-stack, quindi un solo listener serve i peer IPv4 e IPv6 sulla stessa porta. Il client è invece guidato dall'URL, quindi in quel caso il letterale IPv6 va racchiuso tra parentesi quadre, ad esempio oClient.Get('https://[::1]:443/').