header-field = field-name ":" OWS field-value OWS
(field-name): text/html;charset=UTF-8 (field-value)용도
전송에 필요한 모든 부가정보 👌
최신 http 표준 : RFC7230~7235
엔티티->표현(Representation)
표현 = 표현 메타데이터 + 표현 데이터
요청이나 응답에서 전달할 실제 데이터
Content-Type: text/html; charset=utf-8
Content-Type: application/json
content-body에 들어가는 내용 -> (미디어 타입, 문자 인코딩)
표현 데이터를 압축할 때 사용 (gzip, deflate, identity)
데이터 전달하는 곳에서 압축 후 인코딩 헤더 추가
=> 클라이언트가 뭐로 압축되어 있는지 알아야 압축을 풀어서 확인 가능
실제로 헤더가 압축을 하는게 아니고 그냥 압축 형식만 알려줌
Content-Encoding: gzip
큰 공식사이트에 들어가면 기본이 영어
-> 클라이언트에서 언어를 바꾸는 부가작업시 사용
Content-Language: ko
Content-Length: 3423
• Accept: 클라이언트가 선호하는 미디어 타입 전달
• Accept-Charset: 클라이언트가 선호하는 문자 인코딩
• Accept-Encoding: 클라이언트가 선호하는 압축 인코딩
• Accept-Language: 클라이언트가 선호하는 자연 언어
⬇️필요 적용 예시
Accept Language적용 전
📌 상황 1
한국 브라우저( GET /event ) → 다중 언어 지원 서버(우선순위 : en,ko)
GET요청시 들어온 정보 ❌ = 서버는 우선순위 언어 en을 기반 데이터를 전달
📌 상황 2
한국 브라우저( GET /event Accept-Language:ko )
→ 다중 언어 지원 서버(우선순위 : en,ko)
들어온 정보 ⭕ = 서버는 내장하고 있는 ko를 지원
📌 상황 3✨
한국 브라우저( GET /event Accept-Language:ko )
→ 다중 언어 지원 서버(우선순위 : de, en)(독일어, 영어)
→→ ❗복잡한 상황 발생❗
👉 우선순위로 해결
나는 가급적 한국어가 좋은데 안되면 영어를 줘 → 우선순위 필요
언어; q=? GET /event
Accept-Language:ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
----------------------------------------------------
▪️ ko-KR,(q=1) q 생략
▪️ ko;q=0.9
▪️ en-US;q=0.8
▪️ en;q=0.7
단순 / 압축 / 분할 / 범위
단순 : 요청하면 응답 줌 ( Content-Length를 알 때 )
압축 : 서버에서 데이터를 압축해서 전송 ( Content-Encoding 추가 기재 )
분할 : Transfer-Encoding : chunked
서버가 분할해서 전송 (용량이 큰 경우 분할해 전송하면 오는대로 표현가능)
-> Content-Length는 표현 X : 분할해서 보내기때문에 예상이 안됨
범위 : Range
예) 이미지 받는데 중간까지 받았는데 다시 받아야할 때 범위 지정해서 재요청 가능 => Range : bytes = 1001-2000