2. The ORIGIN HTTP/3 Frame (Der ORIGIN HTTP/3-Frame)
2. The ORIGIN HTTP/3 Frame (Der ORIGIN HTTP/3-Frame)
Der ORIGIN HTTP/3-Frame ermöglicht es einem Server anzugeben, welchen Origin oder welche Origins [RFC6454] der Client als ein oder mehrere Mitglieder des Origin Set (Origin-Sets) (Abschnitt 2.3 von [ORIGIN]) für die Verbindung betrachten soll, in der er auftritt.
Die Semantik der Frame-Nutzlast ist identisch mit der des in [ORIGIN] definierten HTTP/2-Frames. Wo HTTP/2 Stream 0 für Frames reserviert, die sich auf den Status der Verbindung beziehen, definiert HTTP/3 zu diesem Zweck ein Paar unidirektionaler Streams, die als "control streams" (Kontroll-Streams) bezeichnet werden.
Wo [ORIGIN] angibt, dass der ORIGIN-Frame auf Stream 0 gesendet wird, sollte dies so interpretiert werden, dass der HTTP/3-Kontroll-Stream gemeint ist: Das heißt, der ORIGIN-Frame wird von Servern an Clients auf dem Kontroll-Stream des Servers gesendet.
HTTP/3 definiert kein Flags-Feld im generischen Frame-Layout. Da für den ORIGIN-Frame keine Flags definiert wurden, definiert diese Spezifikation keinen Mechanismus zur Übermittlung solcher Flags in HTTP/3.
2.1 Frame Layout (Frame-Layout)
Der ORIGIN-Frame hat ein Layout, das nahezu identisch mit dem in HTTP/2 verwendeten Layout ist; die Informationen werden hier der Klarheit halber wiederholt. Der ORIGIN-Frame-Typ ist 0x0c (dezimal 12), wie in HTTP/2. Die Nutzlast enthält null oder mehr Instanzen des Origin-Entry-Feldes.
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
Ein Origin-Entry ist eine längenbegrenzte Zeichenfolge. Konkret enthält er zwei Felder:
Origin-Len: Eine vorzeichenlose 16-Bit-Ganzzahl, die die Länge des ASCII-Origin-Feldes in Oktetten angibt.
ASCII-Origin: Eine OPTIONALE Zeichenfolge, die die ASCII-Serialisierung eines Origins ([RFC6454], Abschnitt 6.2) enthält, für den der Absender behauptet, dass diese Verbindung autoritativ ist oder sein könnte.