6. HTTP Header

Sangmin Yoon·2021년 7월 2일
0

HTTP & Network Basics

목록 보기
6/7

1. HTTP 헤더 필드

  • HTTP 프로토콜의 리퀘스트와 리스폰스에는 반드시 메시지 헤더가 포함되어 있다.
  • HTTP 헤더 필드는 헤더 필드 명 : 필드 값 으로 이루어져 있다.
  • 4종류의 HTTP 헤더 필드 : General Header Fields / Request Header Fields / Response Header Fields / Entity Header Fields
  • HTTP 헤더 필드는 캐시/비캐시 프록시의 동작을 정의하기 위해 2가지 카테고리로 분류되어 있다. (End-to-end 헤더, Hop-by-hop 헤더)

2. General Header Field

1) Cache-Control

  • 디렉티브로 불리는 명령을 사용하여 캐싱 동작을 지정.
  • public/private : 다른 유저에게 돌려줄 수 있는 캐시를 해도 좋은지 여부
  • no-cache : 캐시된 리스폰스 받지 않겠다는 리퀘스트 & 리소스 유효성 재확인하지 않고는 못 쓴다는 리스폰스
  • no-store : 기밀정보 있음.
  • max-age : 유효성 재확인 필요없이 리소스 캐시해두는 최대 시간.
  • min-fresh : 적어도 지정된 시간은 최신 상태의 것을 반환하도록 캐시 서버에 요구
  • max-stale : 캐시된 리소스의 유효 기한이 끝났더라도 받아들일 수 있음.
  • only-if-cached : 로컬 캐시에 타겟 리소스 있는 경우만 리스폰스 반환. 즉, 캐시 서버에서 리스폰스의 리로드와 유효성 재확인하지 않도록 요구.
  • must-revalidate : 리스폰스 캐시의 유효성을 오리진 서버에 조회 요구
  • proxy-revalidate : 모든 캐시 서버에 대해 반드시 유효성 재확인.
  • no-transform : 캐시가 엔티티 바디 미디어 타입 변경하지 않도록.

2) Connection

  • 프록시에 더 이상 전송하지 않는 헤더 필드 지정 / 지속적 접속 관리

3) Date

  • HTTP 메시지를 생성한 날짜

4) Trailer

  • 메시지 바디 뒤에 기술된 헤더 필드를 미리 전달. Chunk Transfer Encoding을 사용하는 경우 사용 가능.

5) Transfer-Encoding

  • 메시지 바디의 전송 코딩 형식 지정.

6) Upgrade

  • HTTP 및 다른 프로토콜의 새 버전이 통신에 사용되는 경우.

7) Via

  • 메시지의 경로를 알기 위함.

8) Warning

  • 캐시에 관한 문제의 경고를 유저에 전달.

3. Request Header Field

1) Accept

  • 유저 에이전트에 처리할 수 있는 미디어 타입과 미디어 타입의 상대적 우선순위를 전달.

2) Accept-Charset

  • 유저 에이전트에 처리할 수 있는 문자셋, 우선순위 전달.

3) Accept-Encoding

  • 유저 에이전트에 콘텐츠 코딩, 우선순위 전달.

4) Accept-Language

  • 유저 에이전트에 자연어의 세트, 우선순위 전달.

5) Authorization

  • 유저 에이전트의 인증 정보 전달.

6) Expect

  • 클라이언트가 서버에 특정 동작을 요구.

7) From

  • 유저 에이전트의 메일 주소 전달.

8) Host

  • 리퀘스트한 리소스의 인터넷 호스트와 포트 번호 전달.
  • 같은 IP 주소로 복수의 도메인 적용된 경우, Host 헤더 파일에 리퀘스트를 받을 호스트명 명확하게 적어야 함.

9) If-Match

  • 서버 상의 리소스를 특정하기 위해 엔티티 태그(ETag) 값을 전달.

10) If-Modified-Since

  • 리소스가 갱신된 날짜가 필드 값보다 새롭지 않다면 리퀘스트를 받아들임.

11) If-None-Match

  • If-Match의 반대.

12) If-Range

  • 지정된 필드값과 리소스의 값이 일치하면 Range 리퀘스트로 처리하고 아니면 리소스 전체를 반환함.

13) If-Unmodified-Since

  • If-Modified-Since의 반대. 지정된 리소스가 필드 값 날짜 이후에 갱신되지 않았으면 리퀘스트 받음.

14) Max-Forwards

  • TRACE / OPTIONS 메소드에 의한 리퀘스트를 할 때 전송해도 좋은 서버 수의 최대치를 10진수 정수로 지정.

15) Proxy-Authorization

  • 프록시 서버 인증에 필요한 클라이언트 정보 전달.

16) Range

  • 리소스의 일부분만 취득하기 위함.

17) Referer

  • 리퀘스트가 발생한 본래 리소스의 URI 전달.

18) TE

  • 리스폰스로 받을 수 있는 전송 코딩의 형식과 우선순위.

19) User-Agent

  • 리퀘스트 생성한 브라우저와 유저 에이전트의 이름 전달.

4. Response Header Field

1) Accept-Ranges

  • Range 리퀘스트 접수할 수 있는지 여부.

2) Age

  • 얼마나 오래 전에 오리진 서버에서 리스폰스가 생성되었는지.

3) ETag

  • 엔티티 태그. 리소스를 특정하기 위한 문자열 전달.
  • 리소스 URI는 같지만 리소스 갱신하면 ETag값 바뀜.

4) Location

  • 리스폰스 수신자에 대해 Request-URI 이외의 리소스 액세스 유도.

5) Proxy-Authenticate

  • 프록시 서버에서의 인증 요구 클라이언트에 전달.

6) Retry-After

  • 클라이언트가 일정 시간 후에 리퀘스트 다시 시행해야 하는지.

7) Server

  • 서버에 설치된 HTTP 서버의 소프트웨어

8) Vary

  • 캐시를 컨트롤하기 위함. 오리진 서버가 프록시 서버에 로컬 캐시를 사용하는 방법에 대한 지시.

0개의 댓글