
해더와 바디
위에 오렌지 라인이 해더내용 아래 오렌지가 실제 데이터 내용 바디이다
해더 해부
- Content-Type : 표현 데이터의 형식
- 바디안에 들어가는 데이터의 타입이 무엇인지(XML , JSON , image/png) - Content-Encoding : 표현 데이터의 압축 방식
- 표현데이터를 압축 할 때 쓴다 (gzip, deflate) - Content-Language : 표현 데이터의 자연언어 (KR, EN , JP)
- Content-Length : 표현 데이터의 길이
클라이언트가 서버에게 요청시 받는 데이터요청
- Accept-Language
: 클라이언트가 서버에게 받고싶은 언어로 달라고 요청하는 것



서버에서 클라이언트가 원하는 Accept-Language를 지원하지 않을 때


0~1 로 우선순위를 정해서 언어를 할당한다
Header의 정보
- Referer(Network탭의 RequestHeaders에 위치)
- 현재 요청된 페이지의 이전 웹 페이지 주소
- A -> B로 이동하는 경우 B를 요청할 때 Referer: A 를 포함해서 요청
- 유입경로를 알아볼 때 사용한다 - User-Agent
- 클라이언트의 어플리케이션 정보(웹 브라우저 정보 등)
- 어떤 종로의 브라우저에서 장애가 발생하는지 파악 가능하다
- 어떤 브라우저에서 들어오는지 파악 가능 - Server
- 요청을 처리하는 ORIGIN(프록시가 아닌 진짜 응답해주는 서버) 서버의 소프트웨어 정보 - Date
- 메세지가 전송된 시간을 의미한다
- 응답에서만 사용 - Host
- 요청에서 사용, 필수
- 하나의 서버가 여러 도메인을 처리해야 할 때 (하나의 서버에서 여러 어플리케이션이 구동될 때 클라이언트에서 서버의 아이피에 요청을 보낼 때 서버의 어떤 어플리케이션인지 찾아야 할때 사용한다)

- Location
- 응답에서 사용한다
- Location정보는 URI로 이루어져있고 URI위치로 자동 리다이렉트가 이루어진다 - 인증
- Authorization : 클라이언트의 인증 정보를 서버에 전달한다
- WWW-Authenticate : 리소스 접근시 필요한 인증 방법 정의 - 쿠키
- Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)
- Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고, HTTP요청시 서버로 전달한다(클라이언트 PC에 저장)


- HTTP는 무상태(Stateless)프로토콜이다
- 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어진다 그래서 클라이언트가 다시 요청하면 이전 요청을 서버는
기억을 못함
- 클라이언트와 서버는 서로 상태를 유지하지 않는다
무상태를 해결하기 위한 방법

서버는 사용자가 로그인했다는 정보를 갖기 위해서 Set-Cookie로 브라우저의 쿠키저장소에 유저정보를 보존한다

클라이언트는 서버에 요청때 마다 해더에 쿠키의 값이 들어가 있어 서버는 요청시 쿠키캆을 보고 로그인했는지 판단이 가능하여
상태기억을 할수 있다
쿠키에 정보를 담아놓으면 보안상 문제가 발생할 때 제약하는 방법

- sessionId : 쿠키의 아이디 값(사용자 정보가 그대로 노출되면 위험하기 때문에 서버에서 session-key라는 것을 저장해놓고 쿠키에 sessionId값을 할당하여 요청시 세션아이디와 세션키를 비교하기위하여 사용)
- expires : 쿠키가 보존되어 파기되는 기간
- 세션쿠키 : expires를 지정하지 않으면 브라우저 종료시 까지만 유지가 된다
- 영속쿠키 : expires를 지정하면 입력한 날짜 까지 유지가 가능하다 (브라우저위 쿠키를 삭제하면 삭제됨) - path : 쿠키값이 허용되는 URI의 범위
- domain : 도메인의 허용되는 범위에서
- 도메인을 적지 않으면 메인도메인만 접근이 가능
- 도메인을 적으면 하위 도메인까지 접근가능 - secure : 보안관련
- Secure : 쿠키는 http, https를 구분하지 않는다, Secure를 적용하면 https인 경우에만 전송한다 - 모든 요청시 해더에 쿠키값이 전송되기 때문에 쿠키의 크기만큼 트래픽이 발생하기 때문에 최소한의정보(세션ID, 인증토큰)만 넘겨주는게 좋다
- 쿠키에 담지 않고 저장해놓고 싶을 때 session에 담아놓는 방법이 좋다
- 탈취 위험이 있기 때문에 중요 데이터는 저장하면 안된다(신용카드정보)