HTTP header fields

헤더는 요청과 응답의 처리 규칙을 메시지 옆에 붙이는 필드다

상태 코드가 결과 범주를 말한다면, 헤더는 대상 서버, 인증, 본문 형식, 캐시, 쿠키처럼 메시지를 어떻게 해석할지 알려준다.

Request

클라이언트가 서버에 의도와 자격을 보낸다

Host

HTTP/1.1 요청에서 대상 origin과 가상 호스트를 구분한다.

Authorization

Bearer, Basic 같은 인증 스킴과 자격 증명을 담는다.

Accept

클라이언트가 받고 싶은 응답 표현 형식을 협상한다.

User-Agent

클라이언트 정보를 알려주지만 위조 가능해 보안 판단 근거로 약하다.

Response / payload

서버는 본문, 캐시, 브라우저 상태 변경 규칙을 돌려준다

Content-Type

요청 또는 응답 본문이 JSON, HTML, form data인지 알려준다.

Cache-Control

저장 가능 여부, freshness, 재검증 방식을 캐시에 전달한다.

Set-Cookie

브라우저 상태 저장을 지시하며 Secure, HttpOnly, SameSite를 함께 본다.

Location

201 Created나 3xx 리디렉션에서 다음 리소스 위치를 알려준다.

case-insensitive

필드 이름 대소문자는 의미를 바꾸지 않는다

하지만 관례적 표기와 중복 헤더 처리 규칙은 구현별 차이를 확인한다.

representation

Content-Type과 Accept를 반대로 쓰지 않는다

Content-Type은 실제 본문 형식, Accept는 원하는 응답 형식이다.

hop-by-hop

프록시 경계에서 전달 범위를 구분한다

Connection 같은 hop-by-hop 헤더는 end-to-end 캐시 정책과 다르게 본다.