티스토리 뷰

네트워크/HTTP

14. 쿠키

Teus 2022. 6. 16. 11:54
728x90
반응형

2022 우아한스터디 "HTTP 완벽가이드"를 진행하면서

'HTTP 완벽 가이드' 책을 읽고, 글쓴이의 생각을 정리하는 글 입니다.

https://book.naver.com/bookdb/book_detail.nhn?bid=8509980 

 

HTTP 완벽 가이드

성공적인 웹 트랜잭션 뒤의 숨은 핵심, HTTP의 모든 것『HTTP 완벽 가이드』는 HTTP 규약이 어떻게 작동하고 웹 기반 애플리케이션을 개발하는 데 어떻게 사용하는지 설명하고, HTTP가 효율적으로 동

book.naver.com

 

1. Stateless

HTTP를 이야기 하다 보면, 항상 나오는 말이 Stateless입니다. 한글로 표현하면 무상태 라고 합니다.

 

뭐 엄청난 의미가 있나 싶으지만, HTTP Connection 자체는 특별한 정보를 가지고 있지 않다는 것을 의미합니다.

(그렇기 때문에 메세지를 보낸 후에는 Connection이 끊기게 됩니다)

 

사용자가 오전에 했던 일을 서버는 오후에 기억하지 못합니다.

 

2. 무엇이 문제인가?

사실 문제는 없습니다. 사용자 입장에서는 필요할때만 사이트에 접속하고, 로그인을 하면 됩니다.

 

문제는 Server는 사용자의 행동을 추적하고 싶어합니다.

(광고라던가, 광고라던가, 광고라던가....)

(물론 사용자 입장에서도 이득이 없는거는 아닙니다 ㅎ)

 

때문에, HTTP의 Stateless를 극복하고 사용기록을 추적하기 위해서

 

2_1. 사용자 식별 관련 정보를 전달하는 HTTP헤더들

  --> 이 정보들로는 명확하게 사용자 식별이 어려움

2_2. 클라이언트 IP주소 추적으로 알아낸 IP주소로 사용자를 식별

  --> IP주소는 모바일 기기의 경우 주기적으로 별해서 추적하기 어려움 + 구형 Proxy의 경우 Client의 IP주소가 사라짐

2_3. 사용자 로그인 인증을 통한 사용자 식별

  --> 매번 로그인 하기가 귀찮고, 로그인 안한 사용자는 추적 불가

2_4. URL에 식별자를 포함하는 기술인 fat URL

  --> URL에 사용자를 식별할 수 있는 id를 추가시킴

       단점으로 캐시 불가, URL공유 불가(개인정보 유출), 이탈할 경우 추적 불가

2_5. 식별 정보를 지속해서 유지하는 쿠키

 

등의 기술이 사용됩니다.

 

3. 쿠키

쿠키의 경우 Server에서 사용자의 행동 기록을 저장하고, 해당 Data에 대응되는 Cookie를 사용자에게 전달합니다.

 

그러면, 다음 접속시에 해당 Cookie를 Request header에 추가하여 서버에 전달하고

 

서버는 Cookie에 해당한는 과거 이력을 보고, 사용자 맞춤 정보를 설정하여 Response를 보내게 됩니다.

Client ---------------------------------> Server
           처음에는 쿠기없이 Request

Client <--------------------------------- Server(Server DB에 Cookie에 해당하는 Data추가됨)
          서버에서 Cookie를 만들고
          해당 Cookie를 Client에게 Response
          


Client ---------------------------------> Server
           Request를 보내기 전에
           URL에 해당하는 Cookie가 있는지 확인 후
           Request에 Cookie값이 포함

Client <--------------------------------- Server(DB에서 Cookie에 해당하는 Data를 찾아옴)
          쿠키정보에 맞는 Data를 만들고
          Client에게 Response

Example.

첫 Server의 Response에서 Set-cookie header를 포함

Set-cookie : user = "teusEE"; domain = "naver.com"

/*
Set-cookie : name=value [; expires=date] [; path=path] [; domain=domain] [; secure]
*/

그러면, Server에는 teusEE라는 Index에 해당하는 DB Record가 생성됨.

 

다음에, Client가 다시 naver에 접속하면 아래 Header가 추가된 Request를 보내게 됩니다.

Cookie:user="TeusEE"
/*
Cookie: name1=value1 [; name2=value2]...
*/

 

이런 쿠키는 Session Cookie(세션쿠키)와 Persistent Cookie(지속쿠키) 로 나뉩니다.

 

세션쿠키는 사용자가 브라우저를 닫으면 사라지고, 지속쿠키는 Set-Cookie를 할 때 정한 Expires, Max-Age에 따라 유지시간이 결정됩니다.

728x90
반응형

'네트워크 > HTTP' 카테고리의 다른 글

16. 인증2(다이제스트 인증)  (0) 2022.07.14
15. 인증  (0) 2022.07.13
13. 웹로봇  (0) 2022.06.08
12. 게이트웨이  (0) 2022.06.05
11. 캐시(2편)  (0) 2022.06.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함