Entity 헤더 : 엔티티 바디에 대한 정보 (ex. Content-Type: text/html, Content-Length: 2433)
메시지 본문 안에 엔티티 본문이 포함되어 있다. 따라에 이에 대한 정보를 해석하는데 Entity 헤더가 사용된다. (데이터유형, 데이터길이, 압축정보 등)
RFC7230~7235
엔티티(Entity)라는 용어를 표현(Representation)으로 변경
Representation : Representation Metadata + Representation Data
이에 따라 Entity 헤더도 표현 헤더로 용어변경
HTTP는 메시지 본문(페이로드)을 통해 표현을 전달한다.
표현은 요청이나 응답에서 전달할 실제 데이터값이다.
cf. 표현 헤더는 표현 메타데이터와 페이로드 메시지를 구분해야하지만, 생략
표현
Content-Type: 표현 데이터의 형식 (ex. text/html; charset=utf-8, application/json, image/png)
Content-Encoding: 표현 데이터의 압축 방식 (ex. gzip, deflate, identity)
Content-Language: 표현 데이터의 자연 언어 (ex. ko, en, en-US)
Content-Length: 표현 데이터의 길이
표현 헤더는 전송, 응답 둘다 사용
Content-negotitation
클라이언트가 선호하는 표현을 우선적으로 전달받도록 하는 헤더정보 (요청시에만 사용)
Accept: 클라이언트가 선호하는 미디어 타입 전달
Accept-Charset: 클라이언트가 선호하는 문자 인코딩
Accept-Encoding: 클라이언트가 선호하는 압축 인코딩
Accept-Language: 클라이언트가 선호하는 자연 언어
단일값을 넣을 수도 있지만, Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7와 같이 Quality Value값을 넣어서 전달해줄 수도 있다. 이 경우, 값이 높은 것을 우선적으로 전달받는다. (존재하지 않을 경우에 다음값으로) 값을 생략하는 경우는 1이라는 의미로 해석한다.
전송방식
단순 전송 : 가장 기본적인 전달방식
압축 전송 : 응답을 특정 형식으로 압축해서 전달
분할 전송 : 값들을 분할하여 전달한다. (Transfer-Encoding) 이 경우 값들이 각각 나누어져 전달되기 때문에 Content-Length를 표기해선 안된다.
범위 전송 : 값의 특정범위만을 필요로 할 경우 해당 부분만 전달
인증
Authorization : 클라이언트 인증 정보를 서버에 전달
WWW-Authenticate : 리소스 접근시 필요한 인증 방법 정의
쿠키
HTTP는 기본적으로 무상태 프로토콜이기 때문에 연결이 끊어지면 서버는 이전 요청에 대한 정보를 기억하지 못한다.
모든 요청과 링크에 사용자 정보를 포함하는 방법도 있지만, 이는 보안적으로 좋지 못한 방법이다.
따라서 쿠키저장소에 정보를 저장하는 방식으로 정보를 기억하고 유지한다. 사용자 로그인 세션을 유지하거나, 광고 정보 트래킹에 사용된다.
네트워크에 추가적인 트래픽을 발생시키기 때문에 최소한의 정보만 사용하는 것이 중요하며, 보안에 완전 민감한 정보(주민번호, 신용카드번호 등)은 사용해선 안된다.
Set-Cookie : 서버에서 클라이언트로 쿠키를 전달한다. 클라이언트는 이를 쿠키저장소에 저장한다.expire나 max-age를 활용해 일정시간이 지나면 쿠키가 만료되도록 할 수 있다. 그외에도 domain 정보를 전달해 해당하는 domain에만 적용되게 하거나, path 정보를 전달해 해당 경로 페이지에만 쿠키를 접근하도록 할수도 있다.