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 |
댓글