HTTP 전송에 필요한 모든 부가정보
인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보, 메세지 바디의 내용, 크기, 압축 등등..
필요 시 임의의 헤더를 추가할 수 있다.


데이터는 다양한 방식으로 표현될 수 있는데, 표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공한다.
요청과 응답에 모두 사용된다.
| 헤더 | 정보 |
|---|---|
| Content-Type | 표현 데이터의 형식 미디어 타입, 문자 인코딩 등 |
| Content-Encoding | 표현 데이터의 압축 방식 ex) gzip, deflate, identify(압축안함) 등 |
| Content-Language | 표현 데이터의 자연어 ex) ko, en, en-US 등 |
| Content-Length | 표현 데이터의 길이 바이트 단위 |
클라이언트가 요청 시 선호하는 표현을 알려주는 역할
요청 시에 사용된다.
| 헤더 | 정보 |
|---|---|
| Accept | 클라이언트가 원하는 미디어 타입 |
| Accept-Charset | 클라이언트가 원하는 문자 인코딩 |
| Accept-Encoding | 클라이언트가 원하는 압축 인코딩 |
| Accept-Language | 클라이언트가 원하는 자연어 |

원하는 표현으로 응답할 수 없는 경우를 대비해서 우선 순위를 알려줄 수 있다

q는 0 ~ 1 사이의 값으로 우선순위를 지정하고, 클수록 높은 우선순위를 가진다.
q 가 1일 경우 생략할 수 있다 (ko-KR;q=1, 에서 ;q=1 은 생략)

q가 없는 경우 구체적인 값이 우선된다
(text/plain;format=flowed > text/plain > text/* > *)
데이터를 그냥 메세지 바디에 실어서 전송
데이터를 압축해서 전송, Content-Encoding 에 압축 방법 명시
쪼개서 전송, Transfer-Encoding: chuncked 로 분할 전송 명시
Content-Length 헤더는 보내면 안됨
크기(Byte)
데이터 -------> 보냄
크기(Byte)
데이터 -------> 보냄

데이터의 일부만 필요한 경우, 범위를 지정해서 요청하면 해당 범위에 해당하는 데이터만 응답
Content-Range: bytes 시작-끝 / 전체

| 헤더 | 요청/응답 | 정보 |
|---|---|---|
From | 요청 | 발신인의 이메일 정보를 전송 검색 엔진 같은 곳에서 사용 |
Referer | 요청 | 이전 페이지 주소를 명시 (어디를 통해서 페이지에 들어왔는지) 유입경로 분석 가능 오타가 났지만 그냥 이대로 쓰고 있음 |
User-Agent | 요청 | 클라이언트 애플리케이션 정보 (웹브라우저 등등) 특정 브라우저에서만 문제가 생길 때 파악, 통계 |
Server | 응답 | Origin 서버의 소프트웨어 정보 프록시 서버나 캐시 서버를 제외한 실제 서버 |
Data | 응답 | 메세지가 발생한 날짜와 시간 |
| 헤더 | 요청/응답 | 정보 |
|---|---|---|
Host | 요청 | 하나의 서버가 여러 도메인을 처리해야 할 때 도메인을 구분하기 위해 명시 (필수) |
Location | 응답 | 201 Created 응답에서는 생성된 리소스의 URI를 명시 3xx Redirection 응답에서는 페이지 리다이렉션 URI를 명시 |
Allow | 응답 | 405 Method Not Allowed 응답에서 해당 URI의 허용 가능한 메서드를 명시 |
Retry-After | 응답 | 503 Service Unavailable 응답에서 서비스를 언제부터 다시 이용할 수 있는지 |

| 헤더 | 요청/응답 | 정보 |
|---|---|---|
Authorization | 요청/응답 | 클라이언트 인증 정보를 서버에 전달 |
(JWT 등)
WWW-Authenticate | 응답 | 401 Unauthorized 응답에서 필요한 인증 방법을 명시
요청할 때마다 사용자 정보를 쿼리 파라미터 등으로 전달하기는 힘들기 때문에, 서버에서 사용자 정보를 쿠키에 실어 클라이언트에 전송한다. 클라이언트는 쿠키를 저장해뒀다가 (정보가 필요한) 요청을 할 때마다 쿠키와 함께 전송한다.
| 헤더 | 요청/응답 | 정보 |
|---|---|---|
Set-Cookie | 응답 | 서버에서 클라이언트로 쿠키 전달 |
Cookie | 요청 | 클라이언트가 서버에서 받은 쿠키를 저장했다가 요청 시 이 헤더를 통해 쿠키를 서버에 전달 |
Set-Cookie: sessionId={세션 아이디}; expires={만료 시간}; path={허용할 경로};
domain={허용할 도메인}; {보안 옵션}
Secure : HTTPS 에서만 허용HttpOnly : HTTP 에서만 허용 (XSS 공격 방지, 자바스크립트에서 쿠키 접근 불가)SameSite : 요청 요청 도메인과 쿠키에 설정된 도메인이 같을 때 허용 (XSRF 공격 방지)