이 글은 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 님의 강의를 듣고 정리한 내용입니다.
HTTP 헤더에는 (필드 이름 : 필드 값) 이 들어가 있다.
HTTP 전송에 필요한 모든 부가 정보들이 들어가 있다.
예시) 메시지 바디 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등..
필요시 임의의 헤더 추가 가능
message body - RFC7230(최신)
메시지 본문(message body)을 통해 표현 데이터 전달
메시지 본문 = 페이로드(pay load)
표현 은 요청이나 응답에서 전달할 실제 데이터를 의미
표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공
GET 메서드를 제외한 나머지들은 다 payload (메시지 본문)을 보낼 수 있다는 것이 HTTP의 약속
Content-Type : 표현 데이터의 형식
Content-Encoding : 표현 데이터의 압축 방식
Content-Language : 표현 데이터의 자연 언어
Content-Length : 표현 데이터의 길이
1. Content-Type
표현 데이터의 형식 설명
미디어 타입, 문자 인코딩
예시)
text/html; charset=utf-8
application/json -> json 타입은 기본이 utf-8
image/png ... 등등
2. Content-Encoding
표현 데이터를 압축하기 위해 사용
데이터를 전달하는 곳에서 압축 후 인코딩 헤더를 추가한다.
데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축을 해제한다.
예시)
gzip
deflate
identity
3. Content-Language
표현 데이터의 자연 언어
표현 데이터의 자연 언어를 표현
예시)
ko
en
en-US
4. Content-Length
표현 데이터의 길이
바이트 단위
Transfer-Encoding(전송 코딩)을 사용하면 Content-Length를 사용하면 안됨
클라이언트가 선호하는 표현 요청
Accept : 클라이언트가 선호하는 미디어 타입 전달
Accept-Charset : 클라이언트가 선호하는 문자 인코딩
Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
Accept-Language : 클라이언트가 선호하는 자연 언어
Quality Values(q)
Quality Values(q)값 사용
0~1, 클수록 높은 우선순위를 갖는다.
생략하면 1을 갖는다.
Quality Values(q)
구체적인 것이 우선한다.
Accept: text/*, text/plain, text/plain;format=flowed, */*
text/plain;format=flowed
text/plain
text/*
*/*
이런 순위로 우선한다.
Transfer-Encoding
Range, Content-Range
단순 전송
압축 전송
분할 전송
범위 전송
1. 단순 전송
2. 압축 전송
3. 분할 전송
4. 범위 전송