본문 바로가기

Development/HTTP

HTTP 메시지 헤더에 대해 조금 더 . . .



헤더 ?

메시지 헤더는 특정 종류의 메시지에만 사용할 수 있는 헤더와, 조금 더 범용적인 목적으로 사용할 수 있는 헤더, 그리고 응답과 요청 메시지에서 정보를 제공하는 헤더가 있다


- 일반 헤더 General Header

클라이언트와 서버 양쪽 모두가 사용하며, 클라이언트나 서버 혹은 또다른 애플리케이션을 위해 여러 목적으로 사용됨.

ex. Date : Tue, 3 Oct 1992 02:14:01 GMT - 대상에게 시간을 알려줌

Connection 클라이언트와 서버가 커넥션에 대한 옵션을 정할수 있게 알려줌

MIME-Version 발송자가 사용한 MIME 버전

Trailer chunked transfer 인코딩으로 "인코딩된 메시지"의 끝부분에 위치한 헤더들의 목록 나열

Transfer-Encoding 메시지에 어떤 인코딩이 적용되었는지 수신자에게 알려줌

Upgrade 발송자가 업그레이드하길 원하는 새 버전이나 프로토콜

Via   어떤 중개자를 거쳤는지 (프락시 등)


일반 캐시 헤더는 애플리케이션에게 매번 원 서버에서 객체를 가져오는 것 대신 로컬 복사본으로 캐시할 수 있도록 해준다.

Cache-Control 메시지와 함깨 캐시 지시자를 전달하기 위해 사용

Pragma 캐시에 국한되지 않고, "지시자"를 전달함


- 요청 헤더 Request Header

서버에게 클라이언트가 요청하는 데이타의 타입이 무엇인지? 같은 부가 정보를 제공. 요청 메시지에서만 의미를 갖는다.

ex.    Accept : */* - 이는 서버로부터 모든 미디어 타입의 데이타를 받을 수 있다고 알려줌.


Client-IP 클라이언트의 IP

From 사용자의 메일 주소

Host 대상 서버의 호스트 명과 포트

Referer 요청 URI가 들어있었던 문서의 URL을 제공

UA-Color,CPU,Disp,OS,Pixels 클라이언트 기기에 대한 정보들을 담음

User-Agent  요청을 보낸 애플리케이션의 이름(브라우저, 기기 등)


Accept 관련 헤더는 서버에게 클라이언트쪽의 선호와 능력을 알려주는 것이 목적이다

Accept 서버가 보내도 되는 미디어 종류를 알려줌

Accept-Charset  서버가 보내도 되는 문자 집함을 알려줌

Accept-Encoding 서버가 보내도 되는 인코딩을 알려줌

Accept-Language 서버가 보내도 되는 언어를 알려줌

TE 서버가 보내도 되는 확장 전송 코딩을 알려줌


조건부 요청 헤더

Expect 요청에 필요한 서버의 행동들을 열거할 수 있게 해준다.

If-Match 주어진 엔티티 태그가 , 문서의 엔티티 태그와 일치하는 경우에만 문서를 가져옴

If-Modified-Since 주어진 날짜 이후에 변경되지 않은 리소스에 대해서는 요청을 제한

If-None-Match If-Match와 반대

If-Range 문서의 특정 범위에 대한 요청 

If-Unmodified-Since 주어진 날짜 이후에 변경된 리소스에 대해서는 요청 제한

Range 서버가 범위 요청을 지원하면, 리소스에 대한 특정 범위를 요청


요청 보안 헤더는 클라이언트가 어느 정도의 리소스에 접근하기 전에 자신을 인증하게 함으로써 트랜잭션에 안전성을 더 한다.

Authorization 클라이언트가 서버에게 제공하는 인증 그 자체에 대한 정보를 담고 있음

Cookie 서버에게 토큰을 전달할 때 사용

Cookie2 요청자가 지원하는 쿠키의 버전을 알려줌


프락시 요청 헤더 

Max-Forwards 프락시나 게이트웨이를 탈 수 있는 최대 횟수

Proxy-Authorization Authorization 과 같으나, 프락시에서 인증할 때 사용

Proxy-Connection Connection과 같으나, 프락시에서 연결을 맺을 때 사용


- 응답 헤더 Response Header

서버가 클라이언트에게 정보를 제공하기 위함. 서버의 종류라던가..

ex.    Server : Tiki-Hut/1.0 - Tiki-Hut 서버 1.0 버전으로부터 응답을 받았다.

Age 응답이 얼마나 오래되었는가

Public 특정 리소스에 대해 지원하는 요청 메서드의 목록

Retry-After 리소스가 사용 불가능일때, 언제부터 가능한지를 제공

Server 서버 애플리케이션의 이름과 버전

Title HTML문서에서 주어진 것과 같은 제목

Warning 사유 구절에 있는 것보다 더 자세한 경고메시지


서버에 여러 언어로 번역된 HTML 문서가 있다면, HTTP는 서버와 클라이언트가 어떤 표현을 택할 것인지 협상을 지원하는데 협상 가능한 리소스에 대한 정보를 운반하는 몇 가지 헤더들이 있다

Accept-Ranges 서버가 자원에 대해 받아들일 수 있는 범위의 형태

Vary 서버가 확인해보아야 하고, 그래서 응답에 영향을 줄 수 있는 헤더들의 목록...(?)


응답 보안 헤더

Proxy-Authenticate 프락시에서 클라이언트로 보낸 인증요구 목록

Set-Cookie 서버가 클라이언트를 인증할 수 있도록 클라이언트 측에 토큰을 설정하기 위해 사용

Set-Cookie2

WWW-Authenticate 서버가 클라이언트로 보낸 인증요구 목록




- 엔티티 헤더 Entity Header

엔티티 본문에 대한 헤더를 말한다. 이 헤더는 엔티티의 데이타 타입이 무엇인지 등을 알려줄 수 있다.

ex. Content-Type : text/html; charset=utf-8 - 애플리케이션에게 데이타가 utf-8포맷의  HTML 문서임을알려준다.


Content-Base 바디에서 사용된 URL 의 Base URL

Content-Encoding 바디의 인코딩 타입 

Content-Language 바디에 적절한 자연어

Content-Length 바디의 사이즈

Content-Location 리소스가 실제 어디에 위치하는가

Content-MD5 바디의 MD5체크섬

Content-Range 전체 리소스에서 이 엔티티가 해당하는 범위를 바이트 단위로 표현

Content-Type 바디가 어떤 종류의 객체인가 


엔티티 캐싱헤더 - 일반 캐싱 헤더는 언제 어떻게 캐싱되어야 하는지에 대한 지시자를 제공하고, 엔티티 캐싱헤더는 엔티티 캐싱에 대한 정보를 제공(캐시된 사본이 유효한가?, 캐시된 리소스가 언제 expire 되는가 등등)

ETage 이 엔티티에 대한 엔티티 태그

Expires 이 엔티티가 더이상 유효하지 않아서 원본을 다시 받아와야 하는 시간

Last-Modified 가장 최근에 이 엔티티가 변경된 시간 


- 확장 헤더 Extension Header

애플리케이션 개발자들이 임의로 만드는 비표준 헤더들.

'Development > HTTP' 카테고리의 다른 글

HTTP 요청 흐름의 이해 (번역)  (0) 2020.05.07
HTTP 메시지 - 메서드  (0) 2016.07.20
3. HTTP 메시지 - 기본 구조  (0) 2016.07.20
2. URL과 리소스 - URL 단축과 확장, 설계  (0) 2016.07.17
2. URL과 리소스 - URL 문법  (0) 2016.07.15