Passa al contenuto principale

2. The ORIGIN HTTP/3 Frame (Il frame ORIGIN HTTP/3)

2. The ORIGIN HTTP/3 Frame (Il frame ORIGIN HTTP/3)

Il frame ORIGIN HTTP/3 consente a un server di indicare quale origine o quali origini [RFC6454] il server vorrebbe che il client considerasse come uno o più membri dell'Origin Set (Insieme di origini) (Sezione 2.3 di [ORIGIN]) per la connessione in cui si verifica.

La semantica del payload del frame è identica a quella del frame HTTP/2 definito in [ORIGIN]. Laddove HTTP/2 riserva lo stream 0 per i frame relativi allo stato della connessione, HTTP/3 definisce una coppia di stream unidirezionali chiamati "control streams" (stream di controllo) a questo scopo.

Laddove [ORIGIN] indica che il frame ORIGIN viene inviato sullo stream 0, questo dovrebbe essere interpretato nel senso di stream di controllo HTTP/3: cioè, il frame ORIGIN viene inviato dai server ai client sullo stream di controllo del server.

HTTP/3 non definisce un campo Flags (Flag) nel layout generico del frame. Poiché non sono stati definiti flag per il frame ORIGIN, questa specifica non definisce un meccanismo per comunicare tali flag in HTTP/3.

2.1 Frame Layout (Layout del frame)

Il frame ORIGIN ha un layout quasi identico a quello utilizzato in HTTP/2; le informazioni sono ripetute qui per chiarezza. Il tipo di frame ORIGIN è 0x0c (decimale 12), come in HTTP/2. Il payload contiene zero o più istanze del campo Origin-Entry.

HTTP/3 Origin-Entry {
Origin-Len (16),
ASCII-Origin (..),
}

HTTP/3 ORIGIN Frame {
Type (i) = 0x0c,
Length (i),
Origin-Entry (..) ...,
}

Figure 1: ORIGIN Frame Layout

Un Origin-Entry è una stringa delimitata dalla lunghezza. Nello specifico, contiene due campi:

Origin-Len: Un intero senza segno a 16 bit che indica la lunghezza, in ottetti, del campo ASCII-Origin.

ASCII-Origin: Una sequenza OPZIONALE di caratteri contenente la serializzazione ASCII di un'origine ([RFC6454], Sezione 6.2) per la quale il mittente asserisce che questa connessione è o potrebbe essere autorevole.