HTTP(HyperText Transfer Protocol )는 웹 문서나 데이터를 전송하기 위한 프로토콜입니다.
클라이언트와 서버가 통신할 때 부가적인 정보를 담기 위해 header 를 사용합니다.
HTTP Header 구조
1. General (일반)
Request URL(요청 URL) : 브라우저에서 요청한 서비스 요청 주소
Request Method(요청 메서드) : 서비스 요청 방식 (GET, POST 등)
Status Code(상태 코드) : 요청한 서비스에 대한 응답 상태 코드 (200, 400, 404 에러 등)
Remote Address(원격 주소) : 서비스 접근 IP 주소(naver.com 의 서버 IP 주소)
Referrer Policy(리퍼러 정책) : 브라우저에서의 참조자 정책
2. Request Header(요청 헤더)
클라이언트(브라우저)가 보내는 요청 정보의 헤더 정보이다.
즉, 내가 보내는 요청에 대한 부가적인 요청 정보이다.
Accept : 클라이언트가 어떤 컨텐츠 유형을 이해할 수 있는지 MIME 타입을 나타낸다. 요청하는 사람이 어떤 MIME 타입 유형을 이해할 수 있는지 보여주는 헤더값 (수신 처리 가능한 MIME 타입)
Accept-Encoding : 클라이언트가 이해할 수 있는 컨텐츠 인코딩을 나타낸다. (일반적으로 압축 알고리즘)
Accept-Language : 클라이언트가 사용 가능한 언어 정보
Cookie : 클라이언트가 서버에 제출하는 쿠키 정보
Host : 요청 받을 서버의 도메인 정보
Origin : 서비스 요청을 시작한 주소 정보 (내가 요청한 브라우저의 주소 정보) => 전체 주소가 아닌 도메인 정보까지만 나온다.
Referer : 현재 서비스 요청이 발생한 페이지의 전체 주소
User-Agent : 클라이언트가 요청한 브라우저나 어플리케이션의 정보
Sec-* : 요청 모드의 메타데이터 정보
Connection : 하나의 TCP Connection 을 활용해서 여러개의 HTTP request/response 를 주고받을 수 있는 기능이다. keep-alive 와 close 가 존재한다. 여러 Request 를 보낼때마다 Connection 을 맺었다 끊었다 해야하는 부하가 생기지만 keep-alive 옵션을 활용하면 connection 을 유지하면서 불필요한 연결 맺고 끊음을 최소화 할 수 있다. * keep-alive 설정 방법 => Connection: Keep-Alive => Keep-Alive: timeout=5, max=1000