5. Message Routing (メッセージルーティング)
HTTPリクエストメッセージのルーティングは、ターゲットリソース、プロキシ構成、およびネットワーク接続の確立または再利用に基づいて、クライアントによって決定されます。
5.1. Identifying a Target Resource (ターゲットリソースの識別)
HTTPは、単一のオリジンサーバーがいくつの異なるリソースに対して権威ある応答を提供できるか、単一のリソースの権限の範囲、または単一のリソースを参照する可能性のあるURI空間を制限しません。
5.2. Connecting Inbound (インバウンド接続)
クライアントがURIまたはその構成を調べることによってターゲットURIとオリジンサーバーまたはプロキシを決定すると、クライアントはどこに接続するかを決定します。
5.3. Request Target (リクエストターゲット)
ターゲットへのインバウンド接続が確立されると、クライアントはHTTPリクエストメッセージ (Section 3) を送信します。その起動行 (start-line) には、リクエストを適用すべきターゲットリソースを識別するリクエストターゲット (request-target) が含まれます。
request-target = origin-form
/ absolute-form
/ authority-form
/ asterisk-form
5.3.1. origin-form
最も一般的なリクエストターゲット形式は"origin-form"です。
origin-form = absolute-path [ "?" query ]
5.3.2. absolute-form
プロキシへのリクエストを行う場合、CONNECTまたはサーバー全体のOPTIONSリクエスト (以下で説明) を除いて、クライアントはリクエストターゲットとしてターゲットURIのabsolute-formを送信しなければなりません。
absolute-form = absolute-URI
5.3.3. authority-form
authority-formリクエストターゲットは、CONNECTリクエスト ([RFC7231], [Section 4.3.6]) にのみ使用されます。
authority-form = authority
5.3.4. asterisk-form
asterisk-formリクエストターゲットは、サーバー全体のOPTIONSリクエスト ([RFC7231], [Section 4.3.7]) にのみ使用されます。
asterisk-form = "*"
5.4. Host
"Host"ヘッダーフィールドは、リクエストでターゲットURIのホストとポート情報を提供し、オリジンサーバーが単一のIPアドレスで提供されるリソースを区別できるようにします。
Host = uri-host [ ":" port ]
クライアントは、すべてのHTTP/1.1リクエストメッセージで Host ヘッダーフィールドを送信しなければなりません。
5.5. Effective Request URI (有効リクエストURI)
リクエストターゲットがabsolute-formの場合、有効リクエストURI (effective request URI) はリクエストターゲットです。
5.6. Associating a Response to a Request (レスポンスのリクエストへの関連付け)
HTTPは、レスポンスに識別子を含めて特定のリクエストに明示的に関連付けることはありません。したがって、レスポンスがどのリクエストに関連付けられているかを識別するために基盤となる接続に依存します。
5.7. Message Forwarding (メッセージ転送)
Section 2.3 で説明されているように、仲介者は、出力サーバーのプロキシとして機能したり、オリジンサーバーの表現として機能するゲートウェイとして機能したり、接続トンネルとして機能したりできます。
5.7.1. Via
"Via"ヘッダーフィールドは、リクエストメッセージとレスポンスメッセージ間の仲介プロトコルと受信者の存在を示します。
Via = 1#( received-protocol RWS received-by [ RWS comment ] )
received-protocol = [ protocol-name "/" ] protocol-version
received-by = ( uri-host [ ":" port ] ) / pseudonym
pseudonym = token
各仲介者は、メッセージを転送する前に Via ヘッダーフィールドを追加しなければなりません。
5.7.2. Transformations (変換)
一部の仲介者には、ペイロードまたはメッセージセマンティクスの変換機能が含まれており、これは一部のHTTPアプリケーションにとって有用です。
プロキシは、明示的に要求されない限り、リクエストの意図内容 (intent content) を変更すべきではありません。