Passa al contenuto principale

9. Estensioni a HTTP/3 (Extensions to HTTP/3)

HTTP/3 permette l'estensione del protocollo. Entro i limiti descritti in questa sezione, le estensioni di protocollo possono essere utilizzate per fornire servizi aggiuntivi o alterare qualsiasi aspetto del protocollo. Le estensioni sono effettive solo nell'ambito di una singola connessione HTTP/3.

Questo si applica agli elementi di protocollo definiti in questo documento. Questo non influisce sulle opzioni esistenti per estendere HTTP, come la definizione di nuovi metodi, codici di stato o campi.

Le estensioni possono utilizzare nuovi tipi di frame (Sezione 7.2), nuove impostazioni (Sezione 7.2.4.1), nuovi codici di errore (Sezione 8) o nuovi tipi di flusso unidirezionale (Sezione 6.2). Sono stabiliti registri per gestire questi punti di estensione: tipi di frame (Sezione 11.2.1), impostazioni (Sezione 11.2.2), codici di errore (Sezione 11.2.3) e tipi di flusso (Sezione 11.2.4).

Le implementazioni DEVONO (MUST) ignorare valori sconosciuti o non supportati in tutti gli elementi di protocollo estensibili. Le implementazioni DEVONO (MUST) scartare i dati o interrompere la lettura su flussi unidirezionali che hanno tipi sconosciuti o non supportati. Ciò significa che qualsiasi di questi punti di estensione può essere utilizzato in modo sicuro dalle estensioni senza accordo o negoziazione preventiva. Tuttavia, dove un tipo di frame noto deve trovarsi in una posizione specifica, come il frame SETTINGS come primo frame del flusso di controllo (vedere Sezione 6.2.1), un tipo di frame sconosciuto non soddisfa tale requisito e DOVREBBE (SHOULD) essere trattato come un errore.

Le estensioni che potrebbero modificare la semantica dei componenti di protocollo esistenti DEVONO (MUST) essere negoziate prima di essere utilizzate. Ad esempio, un'estensione che modifica il layout del frame HEADERS non può essere utilizzata fino a quando il peer non ha dato un segnale positivo che questo è accettabile. Coordinare quando tale layout rivisto entra in vigore potrebbe rivelarsi complesso. In quanto tale, l'allocazione di nuovi identificatori per nuove definizioni di elementi di protocollo esistenti è probabilmente più efficace.

Questo documento non impone un metodo specifico per negoziare l'uso di un'estensione, ma nota che un'impostazione (Sezione 7.2.4.1) potrebbe essere utilizzata a tale scopo. Se entrambi i peer impostano un valore che indica la volontà di utilizzare l'estensione, allora l'estensione può essere utilizzata. Se un'impostazione viene utilizzata per la negoziazione dell'estensione, il valore predefinito DEVE (MUST) essere definito in modo tale che l'estensione sia disabilitata se l'impostazione viene omessa.