2. The ORIGIN HTTP/3 Frame
2. The ORIGIN HTTP/3 Frame
The ORIGIN HTTP/3 frame allows a server to indicate what origin or origins [RFC6454] the server would like the client to consider as one or more members of the Origin Set (Section 2.3 of [ORIGIN]) for the connection within which it occurs.
The semantics of the frame payload are identical to those of the HTTP/2 frame defined in [ORIGIN]. Where HTTP/2 reserves stream 0 for frames related to the state of the connection, HTTP/3 defines a pair of unidirectional streams called "control streams" for this purpose.
Where [ORIGIN] indicates that the ORIGIN frame is sent on stream 0, this should be interpreted to mean the HTTP/3 control stream: that is, the ORIGIN frame is sent from servers to clients on the server's control stream.
HTTP/3 does not define a Flags field in the generic frame layout. As no flags have been defined for the ORIGIN frame, this specification does not define a mechanism for communicating such flags in HTTP/3.
2.1 Frame Layout
The ORIGIN frame has a layout that is nearly identical to the layout used in HTTP/2; the information is restated here for clarity. The ORIGIN frame type is 0x0c (decimal 12), as in HTTP/2. The payload contains zero or more instances of the Origin-Entry field.
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
An Origin-Entry is a length-delimited string. Specifically, it contains two fields:
Origin-Len: An unsigned, 16-bit integer indicating the length, in octets, of the ASCII-Origin field.
ASCII-Origin: An OPTIONAL sequence of characters containing the ASCII serialization of an origin ([RFC6454], Section 6.2) that the sender asserts this connection is or could be authoritative for.