24

タイトルが示すように、疑似/コロン ヘッダー フィールドの目的に関する情報を探しています。つまり、2 番目のタイプのヘッダー フィールドがある理由を知りたいです...

また、http2 では、メッセージとステータス行の代わりに疑似/コロン ヘッダー フィールドが使用されていることも知っています (^^^^その理由はわかりません ^^^); しかし、(ステータスとリクエストから) 異なる情報を中継するために http1 で使用される疑似/コロンヘッダーフィールドはありますか?

4

1 に答える 1

31

疑似ヘッダー フィールドの目的は、要求/応答情報が SPDY で運ばれ、その後 HTTP/2 (SPDY に基づく) で運ばれる方法を統一することでした。

SPDY (および HTTP/2) が設計されたとき、さまざまな方法でフォーマットされた要求または応答情報を転送する必要がありました。

HTTP ヘッダーは (キー、値) のペアです。これは簡単です。

ただし、HTTP メソッドの概念があります。これはたまたまリクエスト行の最初のトークンであるため、タプルではありません。そのキーはその位置 (最初のトークン) によって定義され、その値は最初のトークンを形成する要求行に存在する実際の文字です。

リクエスト ターゲットと HTTP バージョンについても同様です。これらは、リクエスト ラインの 2 番目と 3 番目のトークンです。

したがって、概念的には、HTTP リクエストは次のようにペアで表すことができます。

(method, GET)  
(target, /)  
(version, HTTP/1.1)  
(Connection, close)  
(Accept, *)  

ただし、「メソッド」、「ターゲット」、および「バージョン」は、HTTP 仕様によって標準の HTTP ヘッダー名として予約されておらず、カスタム HTTP ヘッダー名として使用できた可能性があるため、プレーンな HTTP ヘッダーとして使用できませんでした (想像してみてください)。 「バージョン」ヘッダーを使用する REST API)。

HTTP/2 では、これらのペアをペアとして同種の方法で運ぶ方法が必要でした。これにより、プロトコルが (大幅に) 簡素化されるためです。

そのため、リクエスト行とレスポンス行によって運ばれる追加情報の特別な名前が導入されました。この追加情報は HTTP/1.1 では定位置ですが、HTTP/2 では通常のペアであり、この点で HTTP/2 をより均一なものにしています。ペアを運ぶだけです。そのため、リクエストとレスポンスの情報を運ぶ HTTP/2 フレームは同じであり、単にHEADERSと呼ばれています。

HTTP/1.1 のヘッダー名として不正な文字となるため、コロンで始まる疑似ヘッダー名が選択されました。HTTP/1.1 は疑似ヘッダー名を使用しません。

于 2015-06-17T20:45:20.830 に答える