HTTP 프로토콜의 리퀘스트와 리스폰스에는 반드시 메시지 헤더가 포함되어 있는데 메시지 헤더에는 클라이언트나 서버가 리퀘스트나 리스폰스를 처리하기 위한 정보가 들어있다. 다만 이러한 정보의 대부분은 클라이언트를 이용하는 사용자가 직접 볼 필요는 없다.
리퀘스트의 HTTP 메시지는 메소드, URI, HTTP 버전, HTTP 헤더 필드 등으로 구성되어 있으며 리스폰스의 HTTP 메시지는 HTTP 버전, 상태 코드, 헤더 필드 등으로 구성되어 있다.

HTTP 헤더 필드는 그 용도에 따라 다음과 같이 분류된다.
1) 일반적 헤더 필드 (General Header Fields)
리퀘스트 메시지와 리스폰스 메시지 둘 다 사용하는 헤더이다.
| 헤더 필드 명 | 설명 |
| Cache-Control | 캐싱 동작 지정 |
| Connection | Hop-by-hop 헤더, 커넥션 관리 |
| Date | 메시지 생성 날짜 |
| Pragma | 메시지 제어 |
| Trailer | 메시지의 끝에 있는 헤더의 일람 |
| Transfer-Encoding | 메시지 바디의 전송 코딩 형식 지정 |
| Upgrade | 다른 프로토콜에 업그레이드 |
| Via | 프록시 서버에 대한 정보 |
| Warning | 에러 통지 |
2) 리퀘스트 헤더 필드 (Request Header Fields)
클라이언트 측에서 서버 측으로 송신된 리퀘스트 메시지에 사용되는 헤더로 리퀘스트의 부가적 정보와 클라이언트의 정보, 리스폰스의 컨텐츠에 관한 우선 순위 등을 부과한다.
| 헤더 필드 명 | 설명 |
| Accept | 유저 에이전트가 처리 가능한 미디어 타입 |
| Accept-Charset | 문자셋 우선 순위 |
| Accept-Encoding | 콘텐츠 인코딩 우선 순위 |
| Accept-Language | 언어(자연어) 우선 순위 |
| Authorization | 웹 인증을 위한 정보 |
| Expect | 서버에 대한 특정 동작의 기대 |
| From | 유저의 메일 주소 |
| Host | 요구된 리소스의 호스트 |
| If-Match | 엔티티 태그의 비교 |
| If-Modified-Since | 리소스의 갱신 시간 비교 |
| If-None-Match | 엔티티 태그의 비교 (If-Match 의 반대) |
| If-Range | 리소스가 갱신되지 않은 경우에 엔티티의 바이트 범위 요구를 송신 |
| If-Unmodified-Since | 리소스의 갱신 시간 비교 (If-Modified-Since 의 반대) |
| Max-Forwards | 최대 전송 홉 수 |
| Proxy-Authorization | 프록시 서버의 클라이언트 인증을 위한 정보 |
| Range | 엔티티 바이트 범위 요구 |
| Referer | 리퀘스트 중의 URI 를 취득하는 곳 |
| TE | 전송 인코딩의 우선 순위 |
| User-Agent | HTTP 클라이언트의 정보 |
3) 리스폰스 헤더 필드 (Response Header Fields)
서버 측에서 클라이언트 측으로 송신한 리스폰스 메시지에 사용되는 헤더로 리스폰스의 정보와 서버의 정보, 클라이언트의 추가 정보 요구 등을 부과한다.
| 헤더 필드 명 | 설명 |
| Accept-Ranges | 바이트 단위의 요구를 수신할 수 있는지 여부 |
| Age | 리소스의 지정 경과 시간 |
| Etag | 리소스 특정하기 위한 정보 |
| Location | 클라이언트를 지정한 URI 에 리다이렉트 |
| Proxy-Authenticate | 프록시 서버의 클라이언트 인증을 위한 정보 |
| Retry-After | 리퀘스트 재시행의 타이밍 요구 |
| Server | HTTP 서버 정보 |
| Vary | 프록시 서버에 대한 캐시 관리 정보 |
| WWW-Authenticate | 서버의 클라이언트 인증을 위한 정보 |
4) 엔티티 헤더 필드 (Entity Header Fields)
리퀘스트 메시지와 리스폰스 메시지에 포함된 엔티티에 사용되는 헤더로 컨텐츠 갱신 시간 등의 엔티티에 관한 정보를 부과한다.
| 헤더 필드 명 | 설명 |
| Allow | 리소스가 제공하는 HTTP 메소드 |
| Content-Encoding | 엔티티 바디에 적용되는 컨텐츠 인코딩 |
| Content-Language | 엔티티의 자연어 |
| Content-Length | 엔티티 바디의 사이즈 (단위 : 바이트) |
| Content-Location | 리소스에 대응하는 대체 URI |
| Content-MD5 | 엔티티 바디의 메시지 다이제스트 |
| Content-Range | 엔티티 바디의 범위 위치 |
| Content-Type | 엔티티 바디의 미디어 타입 |
| Expires | 엔티티 바디의 유효기간 날짜 |
| Last-Modified | 리소스의 최종 갱신 날짜 |
5) 그밖의 헤더 필드
위에 언급된 필드 외에도, 쿠키를 위한 헤더 필드와 웹 서버와 브라우저의 기능에 다양한 독자적인 헤더 필드가 존재한다.
| 헤더 필드 명 | 설명 |
| Set-Cookie | 상태 관리 개시를 위한 쿠키 정보 (리스폰스) |
| Cookie | 서버에서 수신한 쿠키 정보 (리퀘스트) |
| X-Frame-Option | 다른 웹사이트의 프레임에서 표시를 제어하는 헤더. 클릭 재킹이라는 공격을 막는 것을 목적으로 함 |
| X-XSS-Protection | 크로스 사이트 스크립팅(XSS) 대책으로서 브라우저의 XSS 보호 기능을 제어하는 헤더 |
| DNT | DO NOT TRACK. 개인정보 수집을 거부하는 의사를 나타냄 |
| P3P | 웹 사이트 상의 프라이버시 정책에 P3P 를 사용하는 것으로, 프로그램이 읽을 수 있는 형태로 나타내기 위한 리스폰스 헤더 |
'Stg' 카테고리의 다른 글
| HTTPS (0) | 2023.04.22 |
|---|---|
| HTTP의 보안상 약점 (0) | 2023.04.18 |
| HTTP와 연계하는 웹 서버 (0) | 2023.04.12 |
| HTTP 상태코드 (0) | 2023.04.11 |
| Persistent connection / Stateless (0) | 2023.04.06 |
댓글