[3장] HTTP 메시지(2)

cdwde·2022년 7월 26일

HTTP 완벽 가이드

목록 보기
4/6

헤더

일반 헤더

클라이언트와 서버 양쪽 모두가 사용하고 메시지에 대한 아주 기본적인 정보 제공

일반 정보 헤더

헤더설명
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서버 애플리케이션의 이름과 버전
TitleHTML 문서에서 주어진 것과 같은 제목
Warning자세한 경고 메시지

협상 헤더

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

헤더설명
Accept-Ranges
Vary

응답 보안 헤더

헤더설명
Proxy-Authenticate
Set-Cookie
Set-Cookie2
WWW-Authenticate

엔티티 헤더

  • 엔티티 본문에 대한 헤더
  • 요청과 응답 양쪽 모두 엔티티 포함할 수 있기에 양 타입의 메시지에서 나타날 수 있음
  • 엔티티와 내용물, 개체의 타입부터 주어진 리소스에 대해 요청할 수 있는 유효한 메서드 등 광범위한 정보 제공
  • 메시지의 수신자에게 자신이 다루고 있는 것이 무엇인지 말해줌

엔티티 정보 헤더

헤더설명
Allow
Location

콘텐츠 헤더

  • 엔티티의 콘텐츠에 대한 구체적인 정보 제공
  • 콘텐츠의 종류, 크기, 기타 콘텐츠를 처리할 때 유용하게 활용될 수 있는 것
    (예를 들어 내용 유형을 기술한 Content-Type 헤더를 보고 그 객체를 어떻게 보여줄 것인지 결정할 수 있음)
헤더설명
Content-Base
Content-Encoding
Content-Language
Content-Length
Content-Location
Content-MD5
Content-Range
Content-Type

엔티티 캐싱 헤더

  • 일반 캐싱 헤더는 언제 어떻게 캐시가 되어야하는지에 대한 지시자 제공
  • 엔티티 캐싱 헤더는 엔티티 캐싱에 대한 정보 제공
    (예를 들어 리소스에 대해 캐시된 사본이 아직 유효한지에 대한 정보, 캐시된 리소스가 더 이상 유효하지 않게 되는 시점을 추정하기 위한 단서)
헤더설명
ETag
Expires
Last-Modified

확장 헤더

아직 추가되지 않은 비표준 헤더

0개의 댓글