Header란?#
Http 전송에 필요한 모든 부가정보 엄청많음 필요시 임의의 헤더 추가 가능

Message body로 데이터를 전달 (payload)header는 데이터를 해석할 수 있는 정보 제공 (유형, 길이 ….)
** 표현 = 표현 메타데이터 + 표현 데이터 **
표현 (Representation)#
표현 헤더는 전송, 응답 둘다 사용함
REST API의 RE가 바로 표현
Content-Type: 표현 데이터의 형식- (text/html;charset=utf-8 , application/json …..)
Content-Encoding: 표현 데이터의 압축 방식- 전달하는 곳에서 압축 후 헤더 추가 => 읽는 쪽에서 헤더정보로 압축 해제 (gzip ….)
Content-Language: 표현 데이터의 자연 언어- (ko,en …..)
Content-Length: 표현 데이터의 길이- 바이트 단위
- Transfer-Encoding 사용시 Content-Length 사용 ❌ Transfer-encoding
협상#
클라이언트가 선호하는 표현으로 달라고 요청 => 우선순위에 맞춰서 서버가 표현 (못줄수도)
요쳥시에만 사용
Accept: 미디어 타입Accept-Charset: 문자 인코딩Accept-Encoding: 압축 인코딩Accept-Language: 자연 언어
우선순위#
ex)
accept-language: ko,en-US;q=0.9,en;q=0.8,ko-KR;q=0.7
없으면 1, 높을수록 좋은거
구체적일수록 좋은거
전송 방식#
- 단순 :
Content-Length를 줌 - 압축 :
Content-Encoding으로 압축 정보 추가 - 분할 :
Transfer-Encoding : chunked덩어리로 쪼개서 보냄 (Content-length❌) 각 덩어리마다 있음 - 범위 :
Content-Range로 범위 지정해줌
일반 정보#
From- 요청
- 유저 에이전트의 이메일 정보 (잘 사용 x)
Referer❗️ 진짜많이씀- 요청
- 이전 웹 페이지 주소 (어디서들어왔는가?)
- 유입 경로 분석 가능
referrer의 오타임
User-Agent- 요청
- 클라이언트의 애플리케이션 정보(웹 브라우저 등)
- 통계정보
Server- 응답
- 요청을 처리하는 Origin 서버의 소프트웨어 정보
Date- 응답
- 메시지가 발생한 날짜와 시간
특별한 정보#
HOST❗️- 요청
- 필수값임
- 하나의 서버(IP)가 여러 도메인을 처리할 때 구분
Location- 응답
- 페이지 리다이렉션
3xx응답의 결과에Location이 있으면, 자동 이동201도 쓸 수있는데, 요청에 의해 생성된 리소스 URI
Allow405(Method not allow) 에서 응답에 포함- 허용 가능한 HTTP 메서드
Retry-After503(Service Unvaliable) 에서 응답에 포함- 유저가 다음 요청을 하기까지 기다려야 하는 시간 (날짜|초 표기)
인증#
Authorization- 클라이언트의 인증 정보를 서버에 전달
WWW-Authenticate401(UnAuthorized) 응답과 함께 사용- 리소스 접근에 필요한 인증 방법
쿠키 ❗️#
Http는 Stateless 한 프로토콜이므로, 요청과 응답을 주고받고 끝임
한계를 해결하기 위해, 모든 요청에 쿠키를 보냄
Set-Cookie- 서버에서 클라이언트로 쿠키 전달 (응답)
Cookie- 클라이언트가 서버로 쿠키 전달
🍪#
생명주기#
expires: 만료일 지정max-age: 초단위 지정 (음수면 삭제)세션 쿠키: 만료 날짜를 생략하면, 종료시까지 유지
도메인#
- 명시 : 명시한 문서 기준 도메인 + 서브 도메인 포함
- example.org를 지정하면 dev.example.org 도 쿠키 보냄
- 생략 : 현재 문서 기준 도메인만 적용
- dev.example.org는 쿠키 안보냄
PATH#
일반적으로 path=/ 루트로 지정 ex) path = /home으로 지정했다면 /home 밑의 경로만 가능
보안#
Secure: Https에서만 전송HttpOnly: 자바스크립트에서document.cookie로 접근 불가SameSite: 요청 도메인과 쿠키에 설종된 도메인이 같은 경우만 쿠키 전송 (XSRF == CSRF 공격 방지)
HTTP2 <- 다음글