반응형

HTTP 헤더 개요

  • HTTP  header-feild는 field-name ":' OWS field-value OWS가 올 수 있다. (OWS:띄어쓰기 허용)
  • field-name은 대소문자 구분이 없다.

 

HTTP 헤더의 용도

  • HTTP 전송에 필요한 모든 부가정보 (satrt-line을 제외한 부가정보)
  • 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보...
  • 표준 헤더가 너무 많음
  • 필요시 임의의 헤더 추가 가능
    • helloworld:hihi

 

 

과거 HTP RFC2616버전에서는 헤더를 크게 4가지로 분류 했다.

  • 헤더 분류
    • General 헤더 : 메시지 전체에 적용되는 정보, 예) Connection: close
    • Request 헤더: 요청 정보, 예) User-Agent: Mozilla/5.0 (Macintosh;..)
    • Response 헤더: 응답 정보, 예) Server: Apache
    • Entity 헤더: 엔티티 바디 정보, 예) Content-Type: text/html, Content-Length:3423

 

HTTP 메시지에서 제일 아래에 있는 부분은 메시지 본문(message body)이라고 하는데,

  • 메시지 본문(message body)은 엔티티 본문(entity body)을 전달하는데 사용
  • 엔티티 본문은 요청이나 응답에서 전달할 실제 데이터
  • 엔티티 헤더는 엔티티 분문의 데이터를 해석할 수 있는 정보 제공
    • 데이터 유형(html, json), 데이터 길이, 압축 정보 등등

 

그런데 이 스펙이 바뀐다.

어떻게 되냐면,
1999년에 RFC 2616버전이 나온 것이고 거기에 엔티티 헤더같은 내용들이 있었는데,
RFC2616이 폐기가 된다.

왜냐하면, 2014년에 RFC7230~7235로 스펙이 쪼개지면서 상당부분 개정이 되었기 때문이다.
그러면서 엔티티 바디라는 용어가 사라진다.

그래서 어떻게 되냐면,

  • 엔티티(Entity) → 표현(Representation)
  • Representation = representation Metadata + Representation Data
  • 표현 = 표현 메타데이터(헤더) + 표현 데이터

 

엔티티(Entity)라는 용어가 표현(Representation)으로 바뀌었고,
표현이라는 용어는 표현에 대한 메타데이터 + 표현 데이터 이다.

 

그래서 최신 스펙
HTTP BODY의 message body - RFC7230을 살펴보면,

  • 메시지 본문(message body)을 통해 표현 데이터 전달
  • 메시지 본문 = 페이로드(payload)
  • 표현은 요청이나 응답에서 전달할 실제 데이터
  • 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공
    • 데이터 유형(html, json), 데이터 길이, 압축 정보 등등
  • 참고: 표현 헤더는 표현 메타데이터와 페이로드 메시지를 구분해야 하지만, 여기서는 생략

 

 

반응형