HostHost는 요청이 향하는 서버의 도메인 이름(과 선택적 포트)을 담는 헤더로, HTTP/1.1에서 유일하게 필수인 요청 헤더입니다. 하나의 IP 주소에 여러 도메인이 함께 호스팅되는 가상 호스팅(virtual hosting) 환경에서, 서버는 이 값을 보고 어떤 사이트를 응답할지 결정합니다.
HTTP/1.0에는 Host 헤더가 없었기 때문에 한 IP에 사이트를 하나만 둘 수 있었습니다. HTTP/1.1이 Host를 필수로 만들면서 이름 기반 가상 호스팅이 가능해졌고, 오늘날 공유 호스팅·CDN·리버스 프록시가 라우팅의 기준으로 삼습니다. 요청 라인의 경로는 보통 상대 경로(`GET /path`)라서, 서버는 Host 없이는 목적지 도메인을 알 수 없습니다.
값은 URL의 오소리티(authority) 부분과 같으며 스킴이나 경로는 포함하지 않습니다. 기본 포트(HTTP 80, HTTPS 443)일 때는 포트를 생략하고, 비표준 포트면 `example.com:8080`처럼 붙입니다. HTTP/1.1에서 Host가 없거나 두 개 이상이면 서버는 400 Bad Request로 응답해야 합니다.
HTTP/2와 HTTP/3에서는 Host의 역할을 `:authority` 의사 헤더(pseudo-header)가 대신합니다. 프로토콜 변환 시 둘 사이의 값이 일치해야 하며, 불일치는 요청 스머글링(request smuggling)의 통로가 될 수 있습니다.
Host: <host>[:<port>]e.g. Host: www.example.com