HTTP Header에는 HTTP 전송에 필요한 모든 부가 정보가 담겨있다.
ex) 서버 정보, 캐시 정보, 메세지 바디의 크기 ...
최신인 RFC7230에서는 메세지 본문을 통해 표현 데이터를 제공하며, 이를 페이로드(payload)라고 한다.
표현은 요청이나 응답에서 실제로 사용할 수 있는 데이터를 뜻하며, 표현 헤더는 표현 데이터를 해석할 수 있는 정보인 데이터 유형, 압축 정보, 데이터 길이등을 제공한다.
표현 헤더
표현 헤더는 응답과 요청에 모두 사용되며, 아래의 4가지가 있다.
- Content-type : 표현 데이터 형식
- Content-Encoding : 표현 데이터 압축 방식
- Content-Language : 표현 데이터의 자연 언어
- Content-Length : 표현 데이터의 길이
Content-Type
표현 데이터의 형식을 설명하며, 미디어 타입과, 문자 인코딩을 표기해준다.
ex) text/html; charset=utf-8, application/json, image/png...
Content-Encoding
표현 데이터를 압축하기 위해서 사용되며, 데이터를 전달하는 곳에서 압축하고, 인코딩 헤더를 추가하고, 데이터를 읽는 곳에서 인코딩 헤더의 정보로 압축을 해제한다.
ex) gzip, deflate, identity...
Content-Language
표현 데이터의 자연 언어를 표현한다.
ex) ko, en, en-us...
Content-Length
표현 데이터의 길이를 알려주며, 바이트 단위이다. 단 Transfet-Encoding을 사용하면 사용하면 안 된다.
협상(Content Negotiation)
협상 헤더는 요청시에만 사용되며, 클라이언트가 선호하는 표현을 요청 할 수 있다.
- Accept : 클라이언트가 선호하는 미디어 타입 전달
- Accept-Charset : 클라이언트가 선호하는 문자 인코딩
- Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
- Accept-Language : 클라이언트가 선호하는 자연 언어
우선 순위
1. Quality Values를 사용하여, 우선 순위를 줄 수 있다. 0 - 1사이의 값을 줄 수 있고 숫자가 클 수록 우선 순위가 높다., 생략하면 1로 지정된다.
Accept-Language : ko-KR, ko;q=0.9, en-US;q=0.8
2. 구체적인 것이 우선 순위를 가지게 되며, 아래 예시의 우선 순위는 이렇게 된다.
text/palin;format=flowed >> text/plain >> text/* >> */*
Accept : text/*, */*, text/plain, text/plain;format=flowed
3. 구체적인 것을 기준으로, 미디어 타입을 맞춘다.
전송
전송에는 4가지 종류가 있다.
- 단순 전송 : Content-Length를 지정하여 전송하는 방식
- 압축 전송 : Content-Encoding를 지정 하고, 압축하여 전송하는 방식으로, 데이터양이 많이 줄어든다.
- 분할 전송 : Trasfer-Encoding을 사용하여, 데이터를 분할해서 보내는 방식이다.
- 범위 전송 : 내가 희망하는 데이터의 범위를 지정해서 보내는 방식이다.
일반 정보
일반 정보에는 5가지가 있다.
- From : 유저의 이메일 정보, 일반적으로 잘 사용하지 않고, 검색 엔진에서 요청으로 사용한다.
- Referer : 이전 웹 페이지 주소, 요청에서 사용하며, 유입 경로 분석이 가능하게 되고 자주 사용한다.
- User-Agent : 유저에 대한 애플리케이션 정보, 클라이언트 정보, 통계 정보 등이 담기고 요청에서 사용하며, 장애 발생 파악이 가능하다.
- Server : 요청을 처리하는 오리진 서버의 소프트웨어 정보
- Date : 메세지가 생성된 날짜
특별한 정보
- Host : 요청한 호스트 정보(도메인), 필수이며, 요청에서 사용한다.
- Location : 페이지의 경로,
- Allow : 허용 가능한 HTTP 메서드
- Retry-After : 다음 요청까지 유저가 기다려야하는 시간
'CS > Network' 카테고리의 다른 글
[HTTP] HTTP 상태 코드 (0) | 2022.08.12 |
---|---|
[Http] HTTP에 대해서 알아보자. (0) | 2022.08.10 |
[인터넷 통신] URI (0) | 2022.07.20 |
[인터넷 통신] IP, TCP/UDP, PORT, DNS (0) | 2022.07.19 |