-
Notifications
You must be signed in to change notification settings - Fork 0
11. 클라이언트 식별과 쿠키
HyoSang edited this page Apr 4, 2019
·
2 revisions
- HTTP는 익명으로 사용하며 상태가 없고 요청과 응답으로 통신하는 프로토콜
- 그럼에도 개인화를 위해서 여러 정보를 이용한다.(헤더, IP주소, 로그인 인증, URL, 쿠키)
- FROM : 사용자의 이메일 주소
- User-Agent : 사용자의 브라우저
- Referer : 사용자가 현재 링크를 타고 온 근원 페이지
- Authorization : 사용자 이름과 비밀번호
- 사용자가 아닌 사용하는 컴퓨터를 가리키므로 여러 사용자가 같은 컴퓨터를 사용할 경우 식별이 불가능
- 유동 IP를 대부분 ISP가 제공하므로 사용자 식별이 어려움
- NAT때문에 실제 IP가 숨겨짐
- 프락시나 게이트웨이는 새로운 연결을 만드므로 클라이언트 정보를 알기가 어려움
- 위와 같은 이유로 IP를 이용한 사용자 식별은 거의 사용되지 않는다.
- URL에 추가 정보를 붙여서 사용자를 식별
- URL이 길어져서 사용자에게 혼란을 준다
- URL을 공유할 수 없다
- 캐시를 사용할 수 없다
- 여러 방식 중에 가장 널리 사용하는 방식
- 세션 쿠키, 지속 쿠키로 나눌 수 있다.
- 세션 쿠키는 브라우저를 닫으면 삭제된다.
- 지속 쿠키는 좀 더 길게 유지할 수 있다.
- Discard 파라미터, Expires 혹은 Max-Age 파라미터가 존재하면 세션쿠키가 된다.
- HTTP 응답 헤더의 Set-Cookie에 쿠키 정보를 넣어서 사용자가 쿠키를 이용할 수 있도록 한다.
- 이름=값 형태로 전달 된다.
- 브라우저는 헤더로 넘어온 값을 쿠키 데이터베이스에 저장한다.
- 브라우저는 이 쿠키들을 요청 헤더에 기술해서 요청을 보낼 때 같이 전송한다.
- 브라우저는 쿠키를 생성한 서버에게만 쿠키에 담긴 정보를 전달한다.
- Domain 속성을 쿠키에 기술해서 어떤 서버가 그 쿠키를 사용할 수 있는지 제어할 수 있다.
- path 속성을 쿠키에 기술해 서버의 웹 사이트 일부에만 쿠키를 적용할 수도 있다.
ex) Set-Cookie: studioSuper=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
- 이름 = 값 : 큰 따옴표로 감싸지 않은 문자열로 어떤 조합이든 만들 수 있다
- Expires : 선택적인 속성으로 쿠키의 생명 주기를 가리키는 날짜 문자열을 기술한다.
- Domain : 이 속성에 기술된 서버에서 쿠키를 사용할 수 있게 하며, 기술되어 있지 않으면 쿠키를 생성한 서버를 기본값으로 사용한다.
- Path : 이 서버의 특정 문서에만 쿠키를 할당할 수 있게 하는 속성
- Secure : SSL 보안 연결을 사용할 때만 쿠키를 전송하게 하는 속성
- Set-cookie 헤더에 존재하는 조건을 만족하는 쿠키들을 하나의 헤더에 모아서 전송한다 ex) Cookie: cpNo=1; studioSuper=
- 캐시되지 말아야 할 문서가 있다면 표시해라 ex) Cache-Control: no-cache="Set-Cookie"
- Set-Cookie 헤더를 캐시 하는 것에 유의하라.
- Cookie 헤더를 가지고 있는 요청을 주의하라
HTTP 완벽 가이드
Learning HTTP/2
개발자가 반드시 정복해야할 객체지향과 디자인 패턴