TL;DR

リクエスト先のホストとポート番号を指定する HTTP リクエストヘッダである。

なぜ必要か

1 つの IP アドレスとポート番号で複数の Web サイトを運用しているとき、サーバは Host ヘッダの値でアクセス先の Web サイトを判断する(HTTP メッセージを参照)。

仕組み

RFC 9110 によると、Host ヘッダは対象の URI のホストとポートの情報を運ぶ。オリジンサーバはこの値を使い、複数のホスト名でリクエストを受けているときにリソースを区別する。ユーザエージェントは、同じ情報を :authority 擬似ヘッダで送る場合を除いて、リクエストに Host ヘッダを付けなければならない。Host を送るときは、ヘッダセクションの最初のフィールドにすることが推奨されている。

注意点

HTTP/1.1 では必須であり、省略できない。

RFC 9110 は、攻撃者が Host の値を操作して共有キャッシュを汚染したり、リクエストを別の宛先に向けたりする恐れがあると警告している。

関連

出典