Page 19 -
P. 19
4.2 쿠키와 세션 이해하기 N o d e . j s
클라이언트에서 보내는 요청에는 한 가지 큰 단점이 있습니다. 바로 누가 요청을 보내는지 모른다
는 것입니다. 물론 요청을 보내는 IP 주소나 브라우저의 정보를 받아올 수는 있습니다. 하지만 여
러 컴퓨터가 공통으로 IP 주소를 가지거나, 한 컴퓨터를 여러 사람이 사용할 수도 있습니다.
그렇다면 로그인을 구현하면 되지 않느냐고 생각할 수도 있습니다. 정답입니다. 하지만 로그인을
구현하려면 쿠키와 세션에 대해 알고 있어야 합니다. 여러분이 웹 사이트에 방문해서 로그인을 할
때 내부적으로는 쿠키와 세션을 사용하고 있습니다. 로그인한 후에는 새로고침(새로운 요청)을 해
도 로그아웃되지 않지요? 바로 클라이언트가 서버에게 여러분이 누구인지를 지속적으로 알려주
고 있기 때문입니다.
여러분이 누구인지 기억하기 위해서, 서버는 요청에 대한 응답을 할 때 쿠키라는 것을 같이 보내
줍니다. 쿠키는 name=zerocho 같이 단순한 ‘키-값’의 쌍입니다. 서버로부터 쿠키가 오면 웹 브
라우저는 쿠키를 저장해두었다가 요청할 때마다 쿠키를 동봉해서 보내줍니다. 서버는 요청에 들
어 있는 쿠키를 읽어서 사용자가 누구인지 파악합니다.
브라우저는 쿠키가 있다면 자동으로 동봉해서 보내주므로 따로 처리할 필요가 없습니다. 서버에
서 브라우저로 쿠키를 보낼 때만 여러분이 코드를 작성하여 처리하면 됩니다.
그림 4-6 쿠키
클라이언트 요청 서버 쿠키를 가지지 않은 상태
쿠키를 가진 상태
쿠키와 함께 응답
쿠키와 함께 요청
응답
즉, 서버는 미리 클라이언트에 요청자를 추정할 만한 정보를 쿠키로 만들어 보내고, 그 다음부터
는 클라이언트로부터 쿠키를 받아 요청자를 파악합니다. 쿠키가 여러분이 누구인지 추적하고 있
는 것입니다. 개인정보 유출 방지를 위해 쿠키를 주기적으로 지우라는 말이 바로 이러한 이유 때
문입니다.
138
node_06.indd 138 2018-07-20 오전 10:26:43