2. The ORIGIN HTTP/3 Frame (ORIGIN HTTP/3 フレーム)
2. The ORIGIN HTTP/3 Frame (ORIGIN HTTP/3 フレーム)
ORIGIN HTTP/3 フレームを使用すると、サーバーは、その接続において Origin Set (オリジンセット)([ORIGIN] のセクション 2.3)の 1 つ以上のメンバーとしてクライアントに考慮させたいオリジンまたはオリジン群 [RFC6454] を示すことができます。
フレームペイロードの意味は、[ORIGIN] で定義されている HTTP/2 フレームの意味と同一です。HTTP/2 は接続の状態に関連するフレームのためにストリーム 0 を予約していますが、HTTP/3 はこの目的のために "control streams" (制御ストリーム) と呼ばれる一対の単方向ストリームを定義しています。
[ORIGIN] が ORIGIN フレームがストリーム 0 で送信されることを示している場合、これは HTTP/3 制御ストリームを意味すると解釈されるべきです。つまり、ORIGIN フレームはサーバーの制御ストリーム上でサーバーからクライアントに送信されます。
HTTP/3 は、一般的なフレームレイアウトで Flags (フラグ) フィールドを定義していません。ORIGIN フレームにはフラグが定義されていないため、この仕様では HTTP/3 でそのようなフラグを通信するためのメカニズムを定義していません。
2.1 Frame Layout (フレームレイアウト)
ORIGIN フレームのレイアウトは、HTTP/2 で使用されるレイアウトとほぼ同じです。ここでは明確にするために情報を再述します。ORIGIN フレームタイプは、HTTP/2 と同様に 0x0c(10 進数で 12)です。ペイロードには、0 個以上の 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
Origin-Entry は長さ区切りの文字列です。具体的には、次の 2 つのフィールドが含まれます。
Origin-Len: ASCII-Origin フィールドの長さをオクテット単位で示す、符号なし 16 ビット整数。
ASCII-Origin: 送信者がこの接続が正当である、または正当である可能性があると主張するオリジン ([RFC6454]、セクション 6.2) の ASCII シリアル化を含む、オプションの文字シーケンス。