오늘은 쿠키와 세션에 대해 알아보려고 합니다.
저도 개발 공부를 하면서, 그리고 프로젝트를 하면서 사용자의 로그인 상태를 유지할때 세션을 사용한 적이 있습니다. 하지만 왜 사용한건지? 쿠키와 세션의 차이점은 무엇인지? 이런 것은 알아보지 않고 그냥 로그인을 유지하려면 세션을 써야한다길래 썼습니다..ㅎㅎ
웹 개발을 공부하는 요즘, 개념을 정리하기 좋은 기회라고 생각하여 포스팅을 하게 됐습니다.
쿠키와 세션을 사용하는 이유에 대해 알려면 HTTP의 특성을 알아야 합니다.
HTTP는 비상태성(stateless), 비연결지향(connectionless) 이라는 특징을 가지고 있습니다. 이 특징으로 인해 요청과 응답이 끝나면 상태를 유지하지 않고, 연결을 끊어버립니다. 그리고 데이터를 주고받은 통신이 있더라도 다음 통신에 그 데이터를 사용할 수 없습니다.
하지만, 우리가 개발을 하다보면 데이터를 유지하면서 웹 상에서 계속 사용할 일이 생깁니다.
클라이언트와 서버가 주고받은 데이터가 전부 다 사라져서 사용할 수 없다면, 같은 웹 사이트에서 로그인을 수도 없이 많이 해야할 것이고, 오늘 그만보겠다고 한 광고성 팝업 창들은 계속 우리를 괴롭히는 등의 좋지 않은 상황이 생길 수 있습니다.
지금까지 쿠키와 세션에대해 알아봤습니다. 근데 가만보면 둘이 좀 비슷한것 같습니다. 그 이유는 세션도 쿠키를 기반으로 동작한다고 합니다. 그럼에도 이 둘은 여러가지 차이점이 있습니다.
쿠키 | 세션 | |
---|---|---|
저장 위치 | 클라이언트 | 웹 서버 |
데이터 타입 | String | Object |
만료 시점 | 쿠키 저장시 설정된 기간이 지나면 만료 | 브라우저 종료시 삭제(시간설정 가능) |
사용하는 자원 | 클라이언트 자원 | 서버 자원 |
속도 | 세션보다 빠름 | 쿠키보다 느림 |
보안 | 세션보다 안좋음 | 쿠키보다 좋음 |
이상으로 쿠키와 세션에 대해 알아봤습니다.