構造化フィールドに関する新しい RFC: RFC9651 がリリースされました。
HTTP ヘッダーは、値が複雑であるという点で、誰にとっても少し自由なものです
エンコードされており、多くのヘッダーには独自のミニパーサーが必要です。
しばらく前に、今後のヘッダーでこの問題を修正するための「構造化フィールド」という名前の取り組みが開始されました。 HTTP にはヘッダーとトレーラーの両方があるため、これらは「ヘッダー」ではなくフィールドと呼ばれます。
構造化フィールドを使用すると、リスト、辞書、文字列、数値、ブール値、バイナリ データなどをエンコードできます。 2021 年のオリジナルの RFC はかなり成功しており、多くの既存のヘッダーをこの形式に後付けすることはできませんが、多くの新しい標準が活用されています。
いくつかの例:
// 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)
先週公開された新しい RFC では、日付と
という 2 つの新しいデータ型が追加されました。
「表示文字列」。HTTP ヘッダー (およびトレーラー) 形式に適合する Unicode シリアル化です。
// 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>
実際にこれらのヘッダーに遭遇した場合は、標準のパーサーを使用することをお勧めします。その理由の 1 つは、構造化フィールドを使用すると、組み込みの拡張メカニズムがあることです。新しいパラメーターが出現したときに、アプリケーションが突然中断しないようにする必要があります。
独自の HTTP ヘッダーを定義して使用することもできます。構造化フィールド形式は、「キー値オブジェクトをどのようにエンコードするか」や「UTF-8 文字列をどのようにエンコードするか」などの決定を不要にする、非常に優れた「デフォルトの選択肢」です。
すべての言語にパーサーが表示されるため、独自の 1 回限りの形式を作成することを心配する必要はありません。
私は、「構造化ヘッダー」と呼ばれる構造化フィールド用の Javascript ライブラリのメンテナです。このライブラリも、この新しい RFC に合わせて更新しました。 「構造化フィールド」という名前を付ければよかったですが、元の標準によって名前が変更される前にこの名前を選びました。
これらの新しいタイプをサポートするこのライブラリの v2 をリリースし、ES モジュールのサポートも追加しました。
次のいずれかに返信してください:
以上が新しい構造化フィールド RFC がリリースされ、私の Javascript パッケージも同様ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。