헤더
일반 헤더
클라이언트와 서버 양쪽 모두가 사용하고 메시지에 대한 아주 기본적인 정보 제공
일반 정보 헤더
| 헤더 | 설명 |
|---|
| Connection | 클라이언트와 서버가 요청/응답에 대한 옵션 정할 수 있게 해줌 |
| Date | 메시지가 언제 만들어졌는지에 대한 날짜와 시간 제공 |
| MIME-Version | 발송자가 사용한 MIME 버전 알려줌 |
| Trailer chunked transfer | 인코딩으로 인코딩된 메시지의 끝 부분에 위치한 헤더들의 목록 나열 |
| Transfer-Encoding | 수신자에게 안전한 전송을 위해 메시지에 어떤 인코딩이 적용되었는지 알려줌 |
| Upgrade | 발송자가 업그레이드하길 원하는 새 버전이나 프로토콜 알려줌 |
| Via | 이 메시지가 어떤 중개자(프락시, 게이트웨이)를 거쳐 왔는지 보여줌 |
일반 캐시 헤더
HTTP/1.0은 HTTP 애플리케이션에게 매번 원 서버로부터 객체를 가져오는 대신 로컬 복사본으로 캐시할 수 있도록 해주는 최초의 헤더 도입
| 헤더 | 설명 |
|---|
| Cache-Control | 메시지와 함께 캐시 지시자를 전달하기 위해 사용 |
| Pragma | 메시지와 함께 지시자를 전달하는 또 다른 방법, 캐시에 국한되지 않음 |
요청 헤더
- 요청 메시지에서만 의미를 갖는 헤더
- 서버에게 클라이언트가 받고자 하는 데이터의 타입이 무엇인지와 같은 부가 정보를 제공
- 서버는 요청 헤더가 준 클라이언트에 대한 그 정보를 클라이언트에게 더 나은 응답을 주기 위해 활용할 수 있음
요청 정보 헤더
| 헤더 | 설명 |
|---|
| Client-IP | 클라이언트가 실행된 컴퓨터의 IP 제공 |
| From | 클라이언트 사용자의 메일 주소 제공 |
| Host | 요청의 대상이 되는 서버의 호스트 명과 URL 제공 |
| Referer | 현재의 요청 URI가 들어있었던 문서의 URL을 제공 |
| UA-Color | 클라이언트 기기 디스플레이의 색상 능력에 대한 정보 제공 |
| UA-CPU | 클라이언트 CPU의 종류나 제조사 제공 |
| UA-Disp | 클라이언트의 디스플레이(화면) 능력에 대한 정보 제공 |
| UA-OS | 클라이언트 기기에서 동작 중인 운영체제의 이름과 버전 제공 |
| UA-Pixels | 클라이언트 기기 디스플레이에 대한 픽셀 정보 제공 |
| UA-Agent | 요청을 보낸 애플리케이션의 이름을 서버에게 제공 |
Accept 관련 헤더
Accept 관련 헤더들을 통해 클라이언트는 그들이 원하는 것을 얻을 수 있으며, 서버는 클라이언트가 사용할 수도 없는 것을 전송하는데 시간과 대역폭을 낭비하지 않을 수 있음
| 헤더 | 설명 |
|---|
| Accept | 서버가 보내도 되는 미디어 종류 말해줌 |
| Accept-Charset | 서버가 보내도 되는 문자집합 말해줌 |
| Accept-Encoding | 서버가 보내도 되는 인코딩 말해줌 |
| Accept-Language | 서버가 보내도 되는 언어 말해줌 |
| TE | 서버가 보내도 되는 확장 전송 코딩 말해줌 |
조건부 요청 헤더
클라이언트는 요청에 제약을 넣기도 하는데,
(예를 들어 클라이언트가 이미 어떤 문서의 사본을 갖고 있는 상태라면, 클라이언트는 서버에게 그 문서를 요청할 때 자신이 갖고 있는 사본과 다를 때만 전송해달라고 요청하고 싶을 수 있음)
조건부 요청 헤더를 사용해 서버에게 서버가 요청에 응답하기 전에 먼저 조건이 참인지 확인하게 하는 제약을 포함시킬 수 있음
| 헤더 | 설명 |
|---|
| Expect | 클라이언트가 요청에 필요한 서버의 행동을 열거할 수 있게 해줌 |
| If-Match | 문서의 엔티티 태그가 주어진 엔티티 태그와 일치하는 경우에만 문서 가져옴 |
| If-None-Match | 문서의 엔티티 태그가 주어진 엔티티 태그와 일치하지 않는 경우에만 문서 가져옴 |
| If-Modified-Since | 주어진 날짜 이후에 리소스가 변경되었더라면 요청된 리소스 돌려줌 |
| If-Unmodified-Since | 주어진 날짜 이후에 리소스가 변경되지 않았더라면 요청된 리소스 돌려줌 |
| If-Range | 문서의 특정 범위에 대한 요청 할 수 있음 |
| Range | 서버가 범위 요청을 지원한다면, 리소스에 대한 특정 범위 요청 |
요청 보안 헤더
요청하는 클라이언트가 리소스에 접근하기 전 자신을 인증하게 함으로써, 트랜잭션을 약간 더 안전하게 만들고자 HTTP는 자체적으로 요청을 위한 간단한 인증요구/응답 체계 가지고 있음
| 헤더 | 설명 |
|---|
| Authorization | |
| Cookie | |
| Cookie2 | |
프락시 요청 헤더
인터넷에서 프락시가 흔해지면서 그 기능을 돕기 위한 헤더
| 헤더 | 설명 |
|---|
| Max-Forwards | |
| Proxy-Authorization | |
| Proxy-Connection | |
응답 헤더
- 응답 메시지는 클라이언트에게 정보를 제공하기 위한 자신만의 헤더를 가지고 있
음
- 클라이언트에게 부가 정보 제공 (누가 응답을 보내고 있는지, 응답자 능력은 어떻게 되는지, 응답에 대한 특별한 설명 등)
- 클라이언트가 응답을 잘 다루고 나중에 더 나은 요청을 할 수 있도록 도와줌
응답 정보 헤더
| 헤더 | 설명 |
|---|
| Age | 응답이 얼마나 오래되었는지 |
| Public | 서버가 특정 리소스에 대해 지원하는 요청 메서드의 목록 |
| Retry-After | 현재 리소스가 사용 불가능한 상태일 때, 언제 가능해지는지 날짜 혹은 시각 |
| Server | 서버 애플리케이션의 이름과 버전 |
| Title | HTML 문서에서 주어진 것과 같은 제목 |
| Warning | 자세한 경고 메시지 |
협상 헤더
서버에 프랑스어와 독일어로 번역된 HTML 문서가 있는 경우와 같이 여러가지 표현이 가능한 상황이라면, HTTP/1.1은 서버와 클라이언트가 어떤 표현을 택할 것인가에 대한 협상을 할 수 있도록 지원
응답 보안 헤더
| 헤더 | 설명 |
|---|
| Proxy-Authenticate | |
| Set-Cookie | |
| Set-Cookie2 | |
| WWW-Authenticate | |
엔티티 헤더
- 엔티티 본문에 대한 헤더
- 요청과 응답 양쪽 모두 엔티티 포함할 수 있기에 양 타입의 메시지에서 나타날 수 있음
- 엔티티와 내용물, 개체의 타입부터 주어진 리소스에 대해 요청할 수 있는 유효한 메서드 등 광범위한 정보 제공
- 메시지의 수신자에게 자신이 다루고 있는 것이 무엇인지 말해줌
엔티티 정보 헤더
콘텐츠 헤더
- 엔티티의 콘텐츠에 대한 구체적인 정보 제공
- 콘텐츠의 종류, 크기, 기타 콘텐츠를 처리할 때 유용하게 활용될 수 있는 것
(예를 들어 내용 유형을 기술한 Content-Type 헤더를 보고 그 객체를 어떻게 보여줄 것인지 결정할 수 있음)
| 헤더 | 설명 |
|---|
| Content-Base | |
| Content-Encoding | |
| Content-Language | |
| Content-Length | |
| Content-Location | |
| Content-MD5 | |
| Content-Range | |
| Content-Type | |
엔티티 캐싱 헤더
- 일반 캐싱 헤더는 언제 어떻게 캐시가 되어야하는지에 대한 지시자 제공
- 엔티티 캐싱 헤더는 엔티티 캐싱에 대한 정보 제공
(예를 들어 리소스에 대해 캐시된 사본이 아직 유효한지에 대한 정보, 캐시된 리소스가 더 이상 유효하지 않게 되는 시점을 추정하기 위한 단서)
| 헤더 | 설명 |
|---|
| ETag | |
| Expires | |
| Last-Modified | |
확장 헤더
아직 추가되지 않은 비표준 헤더