HTTP プロキシリクエスト:絶対 URL と Host ヘッダー
明示的なプロキシ経由で HTTP/1.1 リクエストを行うときは、絶対リクエストターゲットと Host フィールドを一致させておく。
この HTTP/1.1 プロキシリクエストはどのホストを指しているのか。
GET http://first.example/path HTTP/1.1
Host: second.example
メッセージは矛盾している。プロキシに送る絶対形式のリクエストでは、RFC 9112 により、転送される Host 値はリクエストターゲットに由来しなければならない。Host: first.example を転送するのが期待される動作である。
開発サイトでのテストでは、リソースのホスト名を URL と HTTP オーソリティで一致させておく。名前からアドレスへの所望のマッピングは、解決を担うホップで用意する。矛盾する Host の上書きは、バックエンド選択のための可搬な指示ではない。
HTTPS は異なる。通常の CONNECT トンネルが開いた後、TLS と内部の HTTP 交換はその中で行われる。傍受しないプロキシは通常、暗号化された Host フィールドを書き換えられない。CONNECT の宛先、TLS 名、証明書の同一性は別々の役割のままである。
Via、Referer、Cache-Control を削除しても二つのオーソリティは調和しない。プロキシの書き換えを診断する前に、リクエストの形式とヘッダーを観察した地点を記録する。