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 authority에서 일치시켜야 한다. 원하는 이름-주소 매핑은 확인을 담당하는 홉에서 제공한다. 상충되는 Host 재정의는 백엔드 선택을 위한 이식 가능한 지시가 아니다.
HTTPS는 다르다. 일반 CONNECT 터널이 열린 뒤 TLS와 내부 HTTP 교환은 그 안에서 일어난다. 가로채지 않는 프록시는 보통 암호화된 Host 필드를 다시 쓸 수 없다. CONNECT 대상, TLS 이름, 인증서 신원은 별개의 역할로 남는다.
Via, Referer, Cache-Control을 지우는 것으로 두 authority가 조화되지 않는다. 프록시 재작성을 진단하기 전에 요청 형식과 헤더를 관찰한 지점을 기록한다.