wasup
HTTP헤더) 용도와 분류, 표현 헤더, 협상 헤더 본문
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 안녕? |
- ko-KR : q를 생략
- ko;q=0.9 : 우선순위 2번
- en-US;q=0.8 : 우선순위 3번
- en;q=0.7 : 우선순위 4번
구체적인 것이 우선한다
: Accept: text/*, text/plain, text/plain;format=flowed, */*
- text/plain;format=flowed
- text/plain
- text/*
- */*
구체적인 것을 기준으로 미디어 타입을 맞춘다.
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
참고링크 :
'IT etc' 카테고리의 다른 글
HTTP 헤더) 쿠키 (0) | 2021.08.18 |
---|---|
HTTP 헤더) 전송방식 (단순전송, 압축전송, 분할전송, 범위전송), 헤더의 특별한 정보, 인증 헤더 (0) | 2021.08.17 |
HTTP) 상태코드, 100번대, 200번대, 300번대, 400번대, 500번대 오류 (0) | 2021.08.15 |
HTTP) HTTP 메서드의 활용, HTTP API설계, 컬렉션, 스토어, HTTP FORM (0) | 2021.08.14 |
HTTP) HTTP 메서드, HTTP API, HTTP 메서드 - GET, POST, PUT, PATCH, DELETE, HTTP 메서드의 속성 (0) | 2021.08.13 |