この 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 を削除しても二つのオーソリティは調和しない。プロキシの書き換えを診断する前に、リクエストの形式とヘッダーを観察した地点を記録する。

関連記事