4 분 소요

헤더

헤더와 메서드는 클라이언트와 서버가 무엇을 하는지 결정하기 위해 함께 사용된다.
헤더에는 특정 종류의 메시지에만 사용할 수 있는 헤더와, 일반 목적으로 사용할 수 있는 헤더, 그리고 응답과 요청 메시지 양쪽 모두에서 정보를 제공하는 헤더가 있다. 헤더는 크게 다섯가지로 분류된다.

1. 일반 헤더(General Headers)

일반 헤더는 클라이언트와 서버 양쪽 모두가 사용한다.
메시지를 보내는 다른 애플리케이션들을 위해 다양한 목적으로 사용된다.
예를 들어, Date 헤더는 서버와 클라이언트를 가리지 않고 메시지가 만들어진 일시를 지칭하기 위해 사용하는 일반 목적 헤더이다.

헤더 설명
Connection 클라이언트와 서버가 요청/응답 연결에 대한 옵션을 정할 수 있게 해준다.
Date 메시지가 언제 만들어졌는지에 대한 날짜와 시간을 제공한다.
MIME-Version 발송자가 사용한 MIME의 버전을 알려준다.
Trailer chunked transfer 인코딩으로 인코딩된 메시지의 끝 부분에 위치한 헤더들의 목록을 나열한다.
Transfer-Encoding 수신자에게 안전한 전송을 위해 메시지에 어떤 인코딩이 적용되었는지 말해준다.
Upgrade 발송자가 ‘업그레이드’하길 원하는 새 버전이나 프로토콜을 알려준다.
Via 이 메시지가 어떤 중개자(프락시, 게이트웨이)를 거쳐 왔는지 보여준다.

일반 캐시 헤더

HTTP/1.0 은 HTTP 애플리케이션에게 매번 원 서버로부터 객체를 가져오는 대신 로컬 복사본으로 캐시할 수 있도록 해주는 최초의 헤더를 도입했다.

헤더 설명
Cache-Control 메시지와 함께 캐시 지시자를 전달하기 위해 사용한다.
Pragma 메시지와 함께 지시자를 전달하는 또 다른 방법. 캐시에 국한되지 않는다.

2. 요청 헤더(Request Headers)

이름에서 드러나는 것과 같이, 요청 헤더는 요청 메시지를 위한 헤더다.
서버에게 클라이언트가 받고자 하는 데이터의 타입이 무엇인지와 같은 부가 정보를 제공한다.
예를 들어 Accept 헤더는 서버에게 클라이언트가 자신의 요청에 대응하는 어떤 미디어 타입도 받아들일 것임을 의미한다.

헤더 설명
Client-IP 클라이언트가 실행된 컴퓨터의 IP를 제공한다.
From 클라이언트 사용자의 메일 주소를 제공한다.
Host 요청의 대상이 되는 서버의 호스트 명과 포트를 준다.
Referer 현재의 요청 URI가 들어있었던 문서의 URL을 제공한다.
UA-Color 클라이언트 기기 디스플레이의 색상 능력에 대한 정보를 제공한다.
UA-CPU 클라이언트 CPU의 종류나 제조사를 알려준다.
UA-Disp 클라이언트의 디스플레이(화면) 능력에 대한 정보를 제공한다.
UA-OS 클라이언트 기기에서 동작 중인 운영체제의 이름과 버전을 알려준다.
UA-Pixels 클라이언트 기기 디스플레이에 대한 픽셀 정보를 제공한다.
User-Agent 요청을 보낸 애플리케이션의 이름을 서버에게 말해준다.

Accept 관련 헤더

클라이언트는 Accept 관련 헤더들을 이용해 서버에게 자신의 선호와 능력을 알려줄 수 있다.
즉, 클라이언트가 무엇을 원하고 무엇을 할 수 있는지, 그리고 무엇보다도 원치 않는 것은 무엇인지 알려줄 수 있다.

헤더 설명
Accept 서버에게 서버가 보내도 되는 미디어 종류를 말해준다.
Accept-Charset 서버에게 서버가 보내도 되는 문자집합을 말해준다.
Accept-Encoding 서버에게 서버가 보내도 되는 인코딩을 말해준다.
Accept-Language 서버에게 서버가 보내도 되는 언어를 말해준다.
TE 서버에게 서버가 보내도 되는 확장 전송 코딩을 말해준다.

조건부 요청 헤더

때때로, 클라이언트는 요청에 몇몇 제약을 넣기도 한다.
예를 들어, 클라이언트가 이미 어떤 문서의 사본을 갖고 있는 상태라면, 클라이언트는 서버에게 그 문서를 요청할 때 자신이 갖고 있는 사본과 다를 때만 전송해 달라고 요청할 수 있다.

헤더 설명
Expect 클라이언트가 요청에 필요한 서버의 행동을 얻기할 수 있게 해준다.
If-Match 문서의 엔터티 태그가 주어진 엔터티 태그와 일치하는 경우에만 문서를 가져온다.
If-Modified-Since 주어진 날짜 이후에 리소스가 변경되지 않았다면 요청을 제한한다.
If-None-Match 문서의 엔터티 태그가 주어진 엔터티 태그와 일치하지 않는 경우에만 문서를 가져온다.
If-Range 문서의 특정 범위에 대한 요청을 할 수 있게 해준다.
If-Unmodified-Since 주어진 날짜 이후에 리소스가 변경되었다면 요청을 제한한다.
Range 서버가 범위 요청을 지원한다면, 리소스에 대한 특정 범위를 요청한다.

요청 보안 헤더

HTTP는 자체적으로 요청을 위한 간단한 인증요구/응답 체계를 갖고 있다.

헤더 설명
Authorization 클라이언트가 서버에게 제공하는 인증 그 자체에 대한 정보를 담고 있다.
Cookie 클라이언트가 서버에게 토큰을 전달할 때 사용한다.
Cookie2 요청자가 지원하는 쿠키의 버전을 알려줄 때 사용한다.

프락시 요청 헤더

헤더 설명
Max-Forwards 요청이 원 서버로 향하는 과정에서 다른 프락시나 게이트웨이로 전달될 수 있는 최대 횟수. TRACE 메서드와 함께 사용된다.
Proxy-Authorization Authorization과 같으나 프락시에서 인증을 할 때 쓰인다.
Proxy-Connection Connection과 같으나 프락시에서 연결을 맺을 때 쓰인다.

3. 응답 헤더(Response Headers)

응답 메시지는 클라이언트에게 정보를 제공하기 위한 자신만의 헤더를 갖고 있다.

헤더 설명
Age 응답이 얼마나 오래되었는지
Public 서버가 특정 리소스에 대해 지원하는 요청 메서드의 목록
Retry-After 현재 리소스가 사용 불가능한 상태일 때, 언제 가능해지는지 날짜 혹은 시간
Server 서버 애플리케이션의 이름과 버전
Title HTML 문서에서 주어진 것과 같은 제목
Warning 사유 구절에 있는 것보다 더 자세한 경고 메시지

협상 헤더

서버에 프랑스어와 독일어로 번역된 HTML 문서가 있는 경우 HTTP/1.1은 서버와 클라이언트가 어떤 표현을 택할 것인가에 대한 협상을 할 수 있도록 지원한다.

헤더 설명
Accept-Ranges 서버가 자원에 대해 받아들일 수 있는 범위의 형태
Vary 서버가 확인해 보아야 하고 그렇기 때문에 응답에 영향을 줄 수 있는 헤더들의 목록. 예) 서버가 클라이언트에게 보내줄 리소스의 가장 적절한 버전을 선택하기 위해 살펴보아야 하는 헤더들의 목록.

응답 보안 헤더

헤더 설명
Proxy-Authenticate 프락시에서 클라이언트로 보낸 인증요구의 목록
Set-Cookie 서버가 클라이언트를 인증할 수 있도록 클라이언트 측에 토큰을 설정하기 위해 사용한다.
Set-Cookie2 Set-Cookie와 비슷하게 RFC 2965로 정의된 쿠키.
WWW-Authenticate 서버에서 클라이언트로 보낸 인증요구의 목록

4. 엔터티 헤더(Entity Headers)

엔터티 헤더란 엔터티 본문에 대한 헤더를 말한다.

헤더 설명
Allow 이 엔터티에 대해 수행될 수 있는 요청 메서드들을 나열한다.
Location 클라이언트에게 엔터티가 실제로 어디에 위치하고 있는지 말해준다. 수신자에게 리소스에 대한 (아마도 새로운) 위치(URL)를 알려줄 때 사용한다.

콘텐츠 헤더

엔터티 콘텐츠에 대한 구체적인 정보를 제공한다.
예를 들어 웹브라우저는 내용 유형을 기술한 Content-Type 헤더를 보고 그 객체를 어떻게 보여줄지 결정할 수 있다.

헤더 설명
Content-Base 본문에서 사용된 상대 URL을 계산하기 위한 기저 URL
Content-Encoding 본문에 적용된 어떤 인코딩
Content-Language 본문을 이해하는데 가장 적절한 자연어
Content-Length 본문의 길이나 크기
Content-Location 리소스가 실제로 어디에 위치하는지
Content-MD5 본문의 MD5 체크섬(checksum)
Content-Range 전체 리소스에서 이 엔터티가 해당하는 범위를 바이트 단위로 표현
Content-Type 이 본문이 어떤 종류의 객체인지

엔터티 캐싱 헤더

일반 캐싱 헤더는 언제 어떻게 캐시가 되어야 하는지에 대한 지시자를 제공한다.
엔터티 캐싱 헤더는 엔터티 캐싱에 대한 정보를 제공한다.
예를 들면, 리소스에 대해 캐시된 사본이 아직 유효한지, 캐시된 리소스가 더 이상 유효하지 않게 되는 시점을 더 잘 추정하기 위한 단서 같은 것들이다.

헤더 설명
ETag 이 엔터티에 대한 엔터티 태그
Expires 이 엔터티가 더 이상 유효하지 않아 원본을 다시 받아와야 하는 일시
Last-Modified 가장 최근 이 엔터티가 변경된 일시

5. 확장 헤더(Extension Headers)

확장헤더는 애플리케이션 개발자들에 의해 만들어졌지만 아직 승인된 HTTP 명세에는 추가 되지 않은 비표준 헤더다.

Ref

댓글남기기