인프런에서 김영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식" 강의를
수강하고 정리한 문서입니다. (더 자세한 내용은 강의를 참고)
HTTP Header(헤더) - 기본
개요
- 헤더에는 HTTP 전송에 필요한 모든 부가정보가 들어있다.
- 메시지 바디의 내용, 바디의 크기, 서버 정보, 캐시정보...
- 메시지 바디의 데이터를 해석할 수 있는 정보를 제공해준다. (데이터유형, 데이터 길이 등)
- 표현방식: header-field = field-name ":" OWS field-value OWS
- Ex; Content-Type: text/html;charset=UTF-8
- 표현 (Representation)
- 기존 RFC2616 에서 사용되던 엔티티(Entity)라는 용어가 폐기되고..
- .. 표현(Representation)이라는 용어로 대체되었다. (RFC7230, 최신)
- "표현 메타데이터 + 표현 데이터"로 구성되어있음
- 표현의 종류
- Content-Type: 표현 데이터의 형식
- Ex; text/html, image/png
- Content-Encoding: 표현 데이터의 압축 방식
- Ex; gzip
- Content-Language: 표현 데이터의 자연 언어
- Ex; ko, en
- Content-Length: 표현 데이터의 길이
- 바이트 단위 (Ex; 5)
- Content-Type: 표현 데이터의 형식
- 콘텐츠 협상 (Contents Negotiation)
- 클라이언트가 선호하는 표현을 요청하는 과정을 말한다.
- Accept
- Accept-Charset
- Accept-Language
- 클라이언트가 선호하는 표현을 요청하는 과정을 말한다.
- 전송 방식
- 단순 전송
- 압축 전송
- Content-Encoding 정보를 헤더가 포함 -> 클라이언트가 해당 정보를 통해 압축을 해제
- 분할 전송
- Transfer-Encoding 정보를 통해 분할 전송을 알림
- 범위 전송
- 정보
- 일반
- From: 유저 에이전트 이메일
- Referer: 이전 페이지 주소
- Referer는 Referrer의 오타이지만.. 전 세계적으로 이미 퍼져있어서 수정하지 않고있다.
- User-Agent: 유저 에이전트 어플리케이션 정보
- Ex; Chrome, Safari, Android, iOS
- Server: 요청 처리하는 ORIGIN 서버 소프트웨어 정보
- Ex; nginx
- 특별
- Host: 요청 호스트 정보
- Location: 페이지 리다이렉션
- Allow: 허용 가능 HTTP메서드
- Retry-After: 다음 요청시도까지 대기해야하는 시간
- 일반
HTTP Header(헤더) - 캐시 및 조건부 요청
캐시 기본 동작
- 캐시가 없더라면?
- 데이터가 변경되지 않음에도 계속해서 동일한 데이터를 네트워크를 통해 다운로드 받아야 하는 불편함과 비용이 존재
- 인터넷 네트워크는 느리고 비쌈 > 사용자 경험 악화!
- 캐시 동작
- 첫번째 요청시: HttpResponse 값을 브라우저 캐시에 저장
- 두번째 요청시: 브라우저 캐시 내 캐시 유효 시간 검증
- 유효시간 이내라면 그대로 캐시를 사용하고, 유효시간이 경과했더라도 서버 데이터와 체크하여 변화가 없다면 유효시간을 갱신하고 그대로 사용할 수 있다. (304 Not Modified 응답으로 확인 가능)
- 캐시 제어 헤더
- Cache-Control: 캐시 제어
- Pragma: 캐시 제어(HTTP1.0 하위 호환)
- Expires: 캐시 유효기간
- 현재는 Cache-Control: max-age 사용을 권장한다.
- 프록시 캐시
- 물리적으로 너무나도 먼 곳에 있는 서버의 역할을 대신해주는 Not 실시간 캐시 서버를 말한다.
- 캐시 무효화
- 결제정보, 개인정보 등과 같은 민감 정보는 캐시로 저장하지 못하도록 설정한다.
부족한 블로그에 방문해 주셔서 감사합니다.
잘못된 내용 수정 피드백은 댓글로 적어주세요.
감사합니다 :-)
반응형
'기초 튼튼 > 네트워크' 카테고리의 다른 글
[네트워크]HTTP 정리 - 기본 개념 (0) | 2021.06.28 |
---|