쿠키란 클라이언트인 브라우저에 저장되는 작은 데이터 파일을 의미
기본적으로 클라이언트측의 브라우저 저장됨
세션이란 서버에 클라이언트의 데이터를 저장하는 기술을 의미
기본적으로 서버측의 메모리에 저장됨
HTTP는 요청에 대한 응답을 주고나서 연결을 끊는 특성을 가짐
만약 특정 브라우저에서 로그인을 요청했고 해당 요청이 정상인증되어서 로그인유저라고 응답을 줬을 경우
로그인된 유저라는 응답을 주자마자 서버측에서는 연결을 끊고 해당 상태정보를 지워버림
그렇게되면 로그인했음에도 불구하고 다른 요청시 기존에 로그인했던 정보를 잊고 비로그인상태라고 판단함
HTTP특성에 따라서 발생하는 위와 같은 문제점을 해결하기위해서 쿠키와 세션을 사용하는 것으로 알고 있음
로그인으로 예를 들면
_id
는 유저를 구별하는 고유의 아이디XLTASSAKAT12
라고 가정 )XLTASSAKAT12
값을 저장하고 클라이언트에게 응답할 때 같이 넘겨줌XLTASSAKAT12
라는 쿠키를 가지고 있다가 다른 요청을 서버측에 넘겨줄 때 쿠키를 동봉해서 같이 넘겨줌XLTASSAKAT12
라는 쿠키를 보고 그와 맞는 세션아이디를 찾아보고 존재한다면 로그인인증해줌이렇게 쿠키와 세션을 이용해서 따로 처리해주지않아도 서버에서는 유저인증을 자동으로 해줌
쿠키와 세션을 공부한 이유는 이번에 node.js의 passport의 local전략을 사용하는데 내부적으로 express-session을 사용한다고 들었는데 session이 뭔지도 모르고 공부하니 이해가 안갔었는데 쿠키와 세션에 대해서 공부해보니 어느정도 이해가는것 같음
클라이언트와 브라우저측에 모두 withCredentials
옵션을 true로 넣어주니 쿠키값이 브라우저측에 저장되는것을 보고 왜 사용하는건지 이해됨