HTTP 전송에 필요한 부가정보가 들어있다.
표준 헤더가 굉장히 많다(왜 표준임?)
하지만 Entity는 Representation이라는 용어로 변경되었다.
메시지 본문을 통해 표현 데이터 전달
표현은 요청이나 응답에서 전달할 실제 데이터
표현 헤더는 데이터를 해석할 수 있는 정보 제공
미디어 타입, 문자 인코딩
예시
text/html; charset=utf-8
application/json
image/png
표현 데이터를 압축, 받는쪽이 풀어서 봄
어느나라 언어로 표기할 지 보여줌
바이트 단위 길이 표시
클라이언트가 원하는 우선순위에 맞춰서 표현데이터를 만들어주려고 서버가 시도함.
Accept: 클라이언트가 선호하는 미디어 타입 전달
Accept-Charset: 클라이언트가 선호하는 문자 인코딩
Accept-Encoding: 클라이언트가 선호하는 압축 인코딩
웹브라우저가 선호하는 언어로 데이터를 우선 보내준다
하지만, 서버가 다중언어를 지원하는데 기본이 독일어, 서브가 영어라면 이때 나는 영어를 원하겠지만, 독일어가 올 것이다.
협상과 우선순위 1
Quality Values(q)를 사용
0~1까지 값을 주고 높을 수록 우선순위를 가진다.
이때 협상 우선순위를 사용한다.
GET /event
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
협상과 우선순위 2
구체적인것을 우선시 한다.
Accept: text/*, text/plain, text/plain;format=flowed, */*
자세히 적은게 먼저다
협상과 우선순위 3
구체적인 것으로 우선순위를 맞춘다
길이만 표시해서 단순하게 보낸다
컨텐트 인코딩으로 압축정보를 담고 압축해서 보낸다
용량이 확 줄어든다
나눠서 보내는 방식
지정된 범위만을 보내는 방식이다
단순한 정보성 헤더
유저 에이전트의 이메일 정보
일반적으로 잘 안쓰고, 검색엔진에서 요청에서 자주 쓴다
현재 요청된 페이지의 이전 페이지를 알려준다. 이를 통해 유입경로를 파악할 수 있다.
클라이언트의 애플리케이션 정보를 보낸다
이를 통해 통계정보를 뽑기가 쉽고
브라우저 장애를 파악할 수 있다
요청을 처리하는 ORIGIN서버의 소프트웨어 정보
대부분의 HTTP요청은 여러 프록시 서버를 거쳐서 처리된다.
이때 진짜 요청을 처리해주는 마지막 서버의 정보이다.
시간, 날짜
호스트 헤더는 필수이다
하나의 서버가 여러 도메인을 처리할 때 호스트 도메인을 구분해준다.
가상호스트를 통해 하나의 서버 안에 여러 도메인이 돌아가고 있을 수 있다.
이때, 호스트가 없다면 어느 주소로 연결될지 알수가 ㅇ벗다.
따라서 HOST 헤더를 넣어서 정확한 URL을 준다.
웹 브라우저는 3xx의 응답결과에 Location헤더가 있으면 이쪽으로 리다이렉트한다.
허용 가능한 HTTP 메서드
유저 에이전트가 다음 요청을 하기까지 기다리는 시간
잘 안쓴다
인증방식마다 값이 다르다
리소스 접근시 필요한 인증 방법을 정의해준다
대안 : 모든 링크에 사용자 링크 보내기
--> 개발하기 별로다. 보안문제도 있고 링크도 만들기 어렵다
대안 2 : 쿠기 사용
--> 유저가 보낸 유저정보를 쿠키저장소에 넣어준다. 그 후, 유저가 무슨 요청을 보낼 때 마다 이 쿠키저장소에서 값을 꺼내서 넣어준다
하지만 이를 모든곳에 쓰면 보안에 문제가 생긴다
set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google.com; Secure
주 사용처
사용자 로그인 세션 관리
광고 정보 트래킹
쿠기 정보는 항상 서버 전송
네트워크 트래픽 차지
최소한의 정보만 사용해야하고
서버전송을 원하지 않으면 웹 스토리지 사용
보안민감정보는 절대 저장하면 안된다
-> 근데 카드정보 저장 있던데
만료일을 지정하여 삭제가 가능
만료일을 지정하지 않으면 웹 브라우저 종료시 삭제함
명시 : 명시한 문서 기준 도메인 + 서브도메인까지 전부 포함해서 쿠키를 전송해준다
생략 : 쿠키를 생성하고 도메인을 생략하면 해당 도메인에만 쿠기 접근이 가능하다
경로를 넣으면 경로포함 하위 페이지만 접근할 수 있다.
일반적으로 루트페이지 path=/로 지정한다