The ORIGIN HTTP/3 frame allows a server to indicate what origin or origins [
RFC 6454] 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.
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 (..) ...,
}
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 (RFC 6454, Section 6.2) that the sender asserts this connection is or could be authoritative for.