TL;DR
リクエスト先のホストとポート番号を指定する HTTP リクエストヘッダである。
なぜ必要か
1 つの IP アドレスとポート番号で複数の Web サイトを運用しているとき、サーバは Host ヘッダの値でアクセス先の Web サイトを判断する(HTTP メッセージを参照)。
仕組み
RFC 9110 によると、Host ヘッダは対象の URI のホストとポートの情報を運ぶ。オリジンサーバはこの値を使い、複数のホスト名でリクエストを受けているときにリソースを区別する。ユーザエージェントは、同じ情報を :authority 擬似ヘッダで送る場合を除いて、リクエストに Host ヘッダを付けなければならない。Host を送るときは、ヘッダセクションの最初のフィールドにすることが推奨されている。
注意点
HTTP/1.1 では必須であり、省略できない。
RFC 9110 は、攻撃者が Host の値を操作して共有キャッシュを汚染したり、リクエストを別の宛先に向けたりする恐れがあると警告している。