✔️표현
Content-Type : 표현 데이터의 형식
Content-Encoding : 표현 데이터의 압축 방식
Content-Language : 표현 데이터의 자연 언어
Content-Length : 표현 데이터의 길이
✔️Content-Type
✔️Content-Encoding
✔️Content-Language
✔️Content-Length
클라이언트가 선호하는 표현 요청
협상 헤더는 요청시에만 사용
클라이언트에서 GET 요청을 보내고 서버에서 응답을 보내는데 이 때, 영어로 응답을 보낸다.
클라이언트 요청에 아무 정보가 없으니 서버가 기본 지원 언어로 응답을 한 것이다.
클라이언트에서 GET 요청을 보내고 서버에서 응답을 보내는데 이 때, 언어를 ko로 지정했다.
기본 언어가 영어지만 한국어도 지원하고 있기 때문에 Content-Language를 ko로 하고 실제 메시지 바디에 한국어 데이터를 넣어 응답을 한 것이다.
클라이언트에서 GET 요청을 보내고 서버에서 응답을 보내는데 이 때, 클라이언트에서 받아들일 수 있는 언어는 한국어고 서버에서는 다중 언어를 지원하나 기본 언어로 독일어를 지원하고 영어도 지원하지만 한국어는 지원할 수 없다.
서버를 클라이언트의 요청 언어를 지원하지 않기 때문에 독일어로 응답한다.
✔️협상과 우선순위1
Quality Values(q) 값을 사용
0 ~ 1, 클수록 높은 우선순위
생략하면 1
Accpet-Language: ko-KR, ko;q=0.9, en-US;q=0.8,en;q=0.7
✔️협상과 우선순위2
구체적인 것이 우선한다.
Accept: text/*, text/plain, text/plain;format=floweed, */*
✔️협상과 우선순위3
구체적인 것을 기준으로 미디어 타입을 맞춘다.
Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html; level=2;q=0.4, */*;q=0.5
✔️단순 전송
메시지 바디에 아무런 처리를 하지 않고 그대로 전송하는 것을 말한다.(Content-Length를 알 수 있을 때 사용 가능)
✔️압축 전송
전송해야 하는 데이터를 압축해서 전송을 하는 방법
Content-Encoding 정보에 무엇으로 압축했는지 압축 정보를 넣어준다.
✔️분할 전송
용량이 큰 경우 분할하여 전송하는 방법을 사용
분할 전송은 Content-Length와 같이 사용하면 안 된다.
용량이 큰 경우 분할하여 전송하는 방법을 사용
분할 전송은 Content-Length와 같이 사용하면 안 된다.
✔️범위 전송
범위를 지정해서 요청할 수 있다.
클라이언트가 원하는 범위를 Range에 전달 + 서버는 Range에 요청 받은 범위와 전체 크기 전달
✔️Host : 요청한 호스트의 정보
호스트 정보가 없다면 서버에서 어떤 애플리케이션에 적용되어야할지 구분할 수 있는 방법이 없다. 이 때, Host 헤더를 넣어서 아래와 같이 전달한다.
✔️Location : 페이지 리다이렉션
웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동
응답 코드 3xx에서 설명
201(Created) : Location 값은 요청에 의해 생성된 리소스 URI
3xx(Redirection) : Location 값은 요청을 자동으로 리디렉션하기 위한 대상 리소스를 가리킴
✔️Allow : 허용 가능한 메서드
405(Method Not Allowed) : 허용되지 않은 메서드로 응답에 포함해야함
Allow : GET, HEAD, PUT
✔️Retry-After : 유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
503(Service Unavailable) : 서비스가 언제까지 불능인지 알려줄 수 있음
Retry-After : 날짜 표기 or 초단위 표기
Authorization: Basic xxxxxxxxxxxxx
WWW-Authenticate: Newauth realm="apps", type=1, title="Login to \"apps\"", Basic realm="simple"
Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)
Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고 HTTP 요청시 서버로 전달
클라이언트가 웹 브라우저를 통해서 로그인을 시도
서버는 유저 정보를 Set-Cookie라는 곳에 넣고 응답을 보낸다.
웹 브라우저에서는 쿠키 저장소에 해당 회원 정보를 저장한다.
웹 브라우저는 서버에 요청할 때마다 쿠키 저장소를 조회해서 Cookie 정보에 포함시켜 전송한다. 그렇게 되면 클라이언트를 식별할 수 있게 된다.
쿠키는 모든 요청에 쿠키 정보를 자동으로 포함한다.
그런데 모든 곳에 다 쿠키 정보를 보내면 보안적인 측면에서 문제점이 발생한다. 이를 제약하는 방법들이 있다.
✔️사용처
✔️쿠키 정보는 항상 서버에 전송됨
✔️주의할 점
✔️쿠키 - 생명주기
✔️쿠키 - 도메인
Ex. domain=example.org
✔️쿠키 - 경로
Ex. path=/home
✔️쿠키 - 보안