1. General Header: 메시지 전체에 적용되는 정보에 대한 표현 2. Request Header: 요청에 대한 정보 3. Response Header: 응답에 대한 정보 4. Entity Header: Entity Body에 대한 정보 ex) Content-type: application/json
HTTP message는 Header와 Body로 구성되는데, 각각을 표현 헤더와 표현 데이터라고 칭한다. 표현이란 요청이나 응답에서 전달하는 실제 데이터를 말하며, 표현 헤더는 표현 데이터를 해석할 수 있도록 데이터 유형, 데이터 길이와 같은 정보를 제공한다.
표현 헤더
• Content-Type: 표현 데이터의 타입 미디어 타입, 문자 인코딩 정보를 넣어준다. ex) text/html; charset=utf-8, application/json
• Content-Encoding: 표현 데이터의 압축 방식 데이터를 전달하는 곳에서 Body 부분을 압축 한 뒤, 전달받는 곳에서 어떻게 압축했는지를 알기 위해 인코딩 정보를 제공한다. ex) gzip
• Content-Language: 표현 데이터의 자연어 표현 데이터의 자연 언어에 대한 정보를 제공한다. ex) ko, en
• Content-Length: 표현 데이터의 길이 바이트 단위로 데이터의 길이 정보를 제공한다.
Content negotiation
클라이언트가 요청 시에 선호하는 표현 형식에 대한 정보를 제공한다. (요청 시에만 사용된다.)
• Accept: 선호하는 미디어 타입 • Accept-Charset: 선호하는 문자 인코딩 방식 • Accept-Encoding: 선호하는 압축 인코딩 방식 • Accept-Language: 선호하는 자연어
우선순위
만약 클라이언트가 선호하는 자연어를 지정해 요청을 했으나, 서버에서는 해당 자연어에 대한 지원이 없는 경우에는 서버에서 기본 값으로 설정되어 있는 자연어로 응답하게 될 것이다. 따라서, 선호하는 자연어에 대한 우선순위를 지정해 요청을 보내면, 서버에서 지원하는 언어 중 우선순위가 높은 언어로 응답해줄 수 있다.
1. q값을 사용한 우선순위 설정 q값을 사용한 우선순위 정보 전달 0~1 사이의 수를 사용하고, 클수록 높은 우선순위를 갖는다.
2. 구체적인 타입 명시 표현 타입에 대한 명시
구체적으로 명시된 것이 높은 우선순위를 갖는다.
일반 정보
• Referer: 이전 웹 페이지 주소 - 현재 요청된 페이지의 이전 웹 페이지 주소에 대한 정보를 갖는다. - 유입 경로 분석이 가능하다. - 요청에서만 사용된다.
특별 정보
• Host 요청 시에 필수적으로 사용해야 하는 헤더로, 하나의 서버에는 여러 개의 도메인이 존재할 수 있기 때문에 서버의 어떤 도메인으로 요청을 날리는 것인지를 명시해줘야 한다. Host 헤더 • Location: 리다이렉션할 경로 • Allow: 허용 가능한 HTTP Method • Retry-After: User Agent가 다음 요청을 하기까지 기다려야 하는 시간 - 503 (Service Unavailable) 서비스가 언제까지 사용 불가능한 지 알려줄 수 있음. ex) Retry-After: Fri, 31 Dec 2021 23:59:59 GMT (날짜 표기) / Retry-After: 120 (초 단위 표기)
인증
• Authorization - 클라이언트의 인증 정보를 서버에 전달한다.
• WWW-Authenticate - 리소스에 접근하기 위해 필요한 인증 방법에 대해 정의 - 401 (Unauthorized) 와 함께 사용된다.