Ein neuer RFC wurde für strukturierte Felder veröffentlicht: RFC9651.
HTTP-Header waren in Bezug auf die Komplexität der Werte ein bisschen unpassend
sind codiert, wobei viele Header einen eigenen Mini-Parser erfordern.
Vor einiger Zeit wurde mit dem Versuch begonnen, dieses Problem künftig für Header mit dem Namen „Structured Fields“ zu beheben. Sie heißen Felder und nicht „Header“, weil HTTP sowohl Header als auch Trailer hat!
Mit strukturierten Feldern können Sie Dinge wie Listen, Wörterbücher, Zeichenfolgen, Zahlen, boolesche Werte und Binärdaten kodieren. Der ursprüngliche RFC aus dem Jahr 2021 ist ziemlich erfolgreich und obwohl viele bestehende Header nicht auf dieses Format nachgerüstet werden können, machen sich viele neue Standards die Vorteile zunutze.
Einige Beispiele:
// Parsed an ASCII string Header: "foo" // A simple string, called a 'Token' in the spec Header: foo // Parsed as number Header: 5 Header: -10 Header: 5.01415 // Parsed into boolean Header: ?1 Header: ?0 // Binaries are base64 encoded Header: :RE0gbWUgZm9yIGEgZnJlZSBjb29raWU=: // Items can have parameters Header: "Hello world"; a="5" // A simple list Header: 5, "foo", bar, ?1 # Each element can have parameters Header: sometoken; param1; param2=hi, 42 // A list can also contain lists itself. These are called 'inner lists' and // use parenthesis Header: sometoken, (innerlistitem1 innerlistitem2), (anotherlist) // A simple dictionary Header: fn="evert", ln="pot", coffee=?1 // Each item may have parameters too Header: foo=123; q=1, bar=123, q=0.5 // A dictionary value may be an inner list again Header: foo=(1 2 3)
Der neue RFC, der letzte Woche veröffentlicht wurde, fügt zwei neue Datentypen hinzu: Datumsangaben und
„Anzeigezeichenfolgen“, eine Unicode-Serialisierung, die in das HTTP-Header- (und Trailer-)Format passt.
// Parsed into a Date object<br> Header: @1686634251 <p>// A Unicode string, called a 'Display String' in the spec. They use<br> // percent encoding, but encode a different set of characters than<br> // URLs.<br> Header %"Frysl%C3%A2n"<br> </p>
Wenn Sie auf diese Header in freier Wildbahn stoßen, ist es eine wirklich gute Idee, einen Standardparser zu verwenden. Einer der Gründe dafür ist, dass bei der Verwendung strukturierter Felder ein integrierter Erweiterungsmechanismus vorhanden ist. Sie sollten sicherstellen, dass Ihre Anwendung nicht plötzlich abstürzt, wenn ein neuer Parameter angezeigt wird.
Möglicherweise möchten Sie auch Ihre eigenen HTTP-Header definieren und verwenden. Das strukturierte Feldformat ist eine sehr gute „Standardauswahl“, die Entscheidungen wie „Wie soll ich ein Schlüsselwertobjekt kodieren“ oder „Wie kodiere ich eine UTF-8-Zeichenfolge“ entfällt.
Da für jede Sprache Parser auftauchen, müssen Sie sich keine Gedanken darüber machen, Ihre eigenen, einmaligen Formate zu schreiben.
Ich bin der Betreuer einer Javascript-Bibliothek für strukturierte Felder, genannt „strukturierte Header“, die ich auch für diesen neuen RFC aktualisiert habe. Ich wünschte, ich hätte den Namen „Strukturierte Felder“ gewählt, aber ich habe den Namen gewählt, bevor der ursprüngliche Standard seinen Namen geändert hat.
Ich habe gerade Version 2 dieser Bibliothek veröffentlicht, die diese neuen Typen unterstützt, und außerdem Unterstützung für ES-Module hinzugefügt.
Antworten Sie auf eine dieser Fragen:
Das obige ist der detaillierte Inhalt vonNeue strukturierte Felder RFC raus, ebenso mein Javascript-Paket. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!