wasup

HTTP헤더) 용도와 분류, 표현 헤더, 협상 헤더 본문

IT etc

HTTP헤더) 용도와 분류, 표현 헤더, 협상 헤더

wasupup 2021. 8. 16. 13:32
반응형

HTTP헤더 용도

: HTTP헤더에는 HTTP 전송에 필요한 모든 부가정보가 들어있다.

-> 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시관리 정보 등등

: 필요시 임의의 에더를 추가 가능하다.


1999년 RFC2616(폐기)

HTTP 헤더 분류

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

HTTP 바디

HTTP 구분
HTTP/1.1 200 OK  
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
엔티티헤더
   
<html>
    <body>...</body>
</html>
메시지 본문
      ㄴ엔티티 분문

: 메시지 본문은 엔티티 본문을 전달하는데 사용된다.

: 엔티티 본문은 요청이나 응답에서 전달할 실제 데이터다.

-> 메시지 본문 안에 엔티티 본문을 담아 전송한다.

: 엔티티헤더는 엔티티본문의 데이터를 해석할 수 있는 정보를 제공한다.

-> html, json과같은 데이터 유형, 데이터 길이, 압축 정보 등등


2014년 RFC7230~7235 등장

Entity -> Representation : 엔티티 대신 표현이라는 것이 들어왔다.

Representation = represectation Metadata + Representation Data

표현 = 표현 메타데이터 + 표현 데이터

HTTP 바디 (최신)

HTTP 구분
HTTP/1.1 200 OK  
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
표현 헤더
   
<html>
    <body>...</body>
</html>
메시지 본문 (페이로드)
      ㄴ표현 분문

: 메시지 본문을 통해 표현데이터를 전달한다.

: 메시지 본문 = 페이로드(Payload)

: 표현은 요청이나 응답에서 전달할 실제 데이터라는 의미이다.

-> 표현 헤더와 표현 데이터를 합치면 표현이 됨.

: 표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공한다.

-> html, json과같은 데이터 유형, 데이터 길이, 압축 정보 등등


Representation(표현) 헤더

표현 헤더는 전송, 응답 둘 다 사용한다.
Content-Type 표현 데이터의 형식 html, json
Content-Encoding 표현 데이터의 압축 방식  
Content-Language 표현 데이터의 자연 언어 한국어 or 영어
Content-Length 표현 데이터의 길이  

Content-Type

: 표현 데이터의 형식을 설명!

미디어 타입, 문자 인코딩 예)
text/html;charset=utf-8
application/json
image/png
html인 경우 HTTP/1.1 200 OK
Content-Type: text/html;charset-UTF-8
Content-Length: 3423

<html>
      <body>...</body>
</html>
json인 경우 HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 16

{"data":"hello"}

Content-Encoding

: 표현 데이터 인코딩

표현 데이터 인코딩 예) gzip, deflate, identity(압축안함)
- 표현데이터를 압축하기 위해 사용한다.
- 데이터를 전달하는 곳에서압축 후 인코딩 헤더를 추가한다.
- 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축을 해제한다. 
HTTP/1.1 200 OK
Content-Type: text/html;charset-UTF-8
Content-Encoding: gzip
Content-Length: 3423

lasdkfjl123lsdfkajdifjlk123asdlfkjasdfioj34234

+) DEFLATE는 ZIP, gzip 등의 프로그램에서 사용되는 무손실 압축 데이터 포맷이자 알고리즘이다. 필 캐츠가 PKZIP에 쓰기 위하여 고안하였으며, 후에 이 알고리즘은 RFC 1951로 등록되었다. [위키백과]

Content-Language

: 표현 데이터의 자연 언어

표현 데이터의 자연 언어를 표현 예) ko, en, en-US
한국어 HTTP/1.1 200 OK
Content-Type: text/html;charset-UTF-8
Content-Language: ko

Content-Length: 123

<html>
    안녕하세요.
</html>
영어 HTTP/1.1 200 OK
Content-Type: text/html;charset-UTF-8
Content-Language: en

Content-Length: 123

<html>
    hello
</html>

Content-Length

: 표현 데이터의 길이 - 바이트단위

: Transfer-Encoding(전송 코딩)을 사용하면 Content-Length를 사용하면 안된다.


협상 헤더

: 협상 (콘텐츠 네고시에이션) - 클라이언트가 선호하는 표현 요청

: 요청시에만 사용한다. 

  • Accept : 클라이언트가 선호하는 미디어 타입 전달
  • Accept-Charset : 클라이언트가 선호하는 문자 인코딩
  • Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
  • Accept-Lenguage : 클라이언트가 선호하는 자연 언어
한국어 브라우저 ------>>>>>> <<<<<<------ 기본은 영여지원이지만 한국어도 지원하는
다중 언어 지원 서버
  GET /event
Accept-Lenguage: ko
Content-Language: ko
안녕?
 

협상 우선순위 (Quality Values(q))

0~1로 표현되는, 클 수록 높은 우선순위를 가지는 Quality Values(q) 값을 사용한다.

: 생략시 기본값은 1이다.

한국어
브라우저
------>>>>>> <<<<<<------ 기본은 영여지원이지만 한국어도 지원하는
다중 언어 지원 서버
  GET /event
Accept-Lenguage: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Content-Language: ko
안녕?
 
  1. ko-KR : q를 생략
  2. ko;q=0.9 : 우선순위 2번
  3. en-US;q=0.8 : 우선순위 3번
  4. en;q=0.7 : 우선순위 4번

구체적인 것이 우선한다

: Accept: text/*, text/plain, text/plain;format=flowed, */*

  1. text/plain;format=flowed
  2. text/plain
  3. text/*
  4. */*

구체적인 것을 기준으로 미디어 타입을 맞춘다.

Accept: text/*q=0.3,text/html;q=0.7,text/html;level=1,text/html;level=2;q=0.4,*/*;q=0.5
미디어타입 퀄리티
text/html;level=1 1
text/html; 0.7
text/plain 0.3
image/jpeg 0.5
text/html;level=2 0.4
text/html;level=3 0.7

 

 

 

 


[출처]

 

강의 : 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

참고링크 :

 

 

 

 

 

 

반응형
Comments