Zum Hauptinhalt springen

2.1.3. Binary-Wrapped HTTP Fields (Binär eingepackte Felder)

2.1.3. Binary-Wrapped HTTP Fields (Binär eingepackte HTTP-Felder)

Verursacht der HTTP-Feldwert nach Einschätzung der Anwendung Serialisierungsprobleme, insbesondere bei der Kombination mehrerer Werte zu einer Zeile (Abschnitt 7.5.6), SOLLTE der Signierende den Parameter bs setzen, um anzuzeigen, dass Werte als binäre Strukturen eingepackt werden, bevor sie kombiniert werden.

Ist dieser Parameter gesetzt, MUSS der Komponentenwert wie folgt berechnet werden:

  1. Eingabe: geordnete Menge der Feldwerte in der Reihenfolge ihres Auftretens.

  2. Leere Liste als Akkumulator.

  3. Für jeden Feldwert:

    3.1. Führenden und nachfolgenden Whitespace entfernen (in konformer Implementierung No-Op).

    3.2. Veraltetes Zeilenumbrechen entfernen und durch ein Leerzeichen ersetzen (Abschnitt 5.2 von [HTTP/1.1]); nur für [HTTP/1.1].

    3.3. Die Oktette des resultierenden Feldwertes als Byte Sequence kodieren.

    3.4. Die Byte Sequence zur Liste hinzufügen.

  4. Zwischenergebnis: List von Byte-Sequence-Werten.

  5. Strenge List-Serialisierung gemäß Abschnitt 4.1.1 von [STRUCTURED-FIELDS]; dieses Ergebnis zurückgeben.

Beispiel mit internen Kommas, die sichere Kombination verhindern:

Example-Header: value, with, lots
Example-Header: of, commas

Semantisch andere Einzelzeile:

Example-Header: value, with, lots, of, commas

Ohne Parameter wäre der Komponentenwert in beiden Fällen:

"example-header": value, with, lots, of, commas

Mit bs werden die getrennten Instanzen so kodiert:

"example-header";bs: :dmFsdWUsIHdpdGgsIGxvdHM=:, :b2YsIGNvbW1hcw==:

Bei einer Instanz:

"example-header";bs: :dmFsdWUsIHdpdGgsIGxvdHMsIG9mLCBjb21tYXM=:

Damit ist eine Kollision ausnutzbarer Mehrdeutigkeit verhindert.