header-field = field-name : OWS field-value OWS (OWS : 띄어쓰기 허용)
용도
헤더 분류
2014년 RFC7230 ~ 7235 등장
엔티티 -> 표현(Representation)
Representation = representation Metadata + Representation Data
표현 = 표현 메타데이터 + 표현 데이터
표현 헤더는 전송, 응답 둘 다 사용
표현 데이터의 형식 설명
body에 들어가는 내용이 무엇인지 알려주는 것
application이 json 형식이다.
text가 html형식인데 charset=utf-8로 인코딩 하겠다.
표현 데이터 인코딩
표현 데이터의 자연 언어
본문에 무슨 언어가 들어가있는지 알 수 있음
표현 데이터의 길이
클라이언트가 선호하는 표현 요청
(클라이언트가 원하는 걸 주세요!)
협상 헤더는 요청시에만 사용
Accept-Language : ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
- ko-KR;q=1 (1생략)
- ko;q=0.9
- en-US;q=0.8
- en;q=0.7
1. text/plain;format=flowed
2. text/plain
3. test/*
4. */*
단순 전송
Content-Length
컨텐트의 길이를 알 수 있을 때 쓴다.
한 번에 요청하고 한 번에 쭈욱 받는 것.
압축 전송
Content-Encoding
Content-Length를 압축해서 보낼 때
용량이 확 준다.(코드의 길이를 압축해서 보낸다고 이해함)
분할 전송
Transfer-Encoding
분할해서 보낸다.
Transfer-Encoding : chunked (청크드 : 덩어리)
-> 덩어리를 쪼개서 보낼거야
용량이 큰 걸 분할해서 보낼 때
길이를 예상하지 못하기 때문에 Content-Length를 쓰면 안됨.
범위 전송
범위를 지정해서 보낼 수 있음
From
유저 에이전트의 이메일 정보
Refere
이전 웹 페이지 주소
유입 경로 분석 가능
User-Agent
유저 에이전트 애플리케이션 정보
Server
요청을 처리하는 오리진 서버의 소프트웨어 정보
Origin : 진짜 나의 요청이 있는 마지막 서버, 표현 데이터를 만들어주는 서버, HTTP응답을 해주는 서버
Date
메시지가 생성된 날짜
Host
요청한 호스트 정보(도메인)
요청에서 사용 (필수!)
하나의 서버가 여러 도메인을 처리해야 할 때
Location
페이지 리다이렉션
웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동(리다이렉트)
- 응답 코드 3xx에서 설명
- 201 (Created) : Location 값은 요청에 의해 생성된 리소스 URI
- 3xx (Redirection) : Location 값은 요청을 자동으로 리다이렉션 하기 위한 대상 리소스를 가리킴
Allow
허용 가능한 HTTP 메서드
405 (Method Not Allowed)에서 응답을 포함해야 함
Allow : GET, HEAD, PUT
Retry-After
유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
503 (Service Unavailable) : 서비스가 언제까지 불능인지 알려줄 수 있음
Retry-After : 언제 불능이 풀리는지 넣어준다.
Authorization : 클라이언트 인증 정보를 서버에 전달
WWW-Authenticate : 리소스 접근시 필요한 인증 방법 정의
(401 응답이 일어날 때 넣어줘야 한다.)
Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)
Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP 요청시 서버로 전달
모든 곳에 쿠키 정보를 보내면 보안에 문제가 있을 수 있다