JWT에 대해서 알아보고자 깔짝깔짝 구글링을 하던 중 쿠키/세션/캐시에 대한 개념을 알아두면 좋을 것 같아서 정리함
http는 기본적으로 통신이 완료되면 클라이언트와 관계를 냅다 끊어버림. 즉 데이터가 유지되지 않는다. 그래서 웹에서 뭐 작성하다 새로고침하면 다 날라가는거임ㅋㅋ.
그러나, 어떤 데이터들은 유지되어야 할 필요가 있다.
예를들어, 우리가 특정 사이트에 로그인을 했는데, 새로고침 한번 했다고 로그아웃이 된다면 굉장히 어처구니가 없을것
그래서 이러한 데이터들을 브라우저등에 "임시로 저장" 하기 위해 사용되는 것이 바로 쿠키/세션/캐시/토큰이라고 할 수 있다~
쿠키는 웹사이트 접속시 내 컴퓨터 혹은 웹 브라우저에 저장되는 작은 텍스트 조각이다.
(크롬일 경우 브라우저에, IE일 경우 내컴퓨터에 저장됨)
쿠키에는 서버에서 유저를 식별할 수 있는 데이터들이 저장되며, 지정된 만료일이 지나면 삭제된다.
쿠키는 사용자가 수정및 삭제할 수 있고, 제 3자가 조회할 수 있기 때문에 가벼운 정보들이 저장되며 보안상 민감한 정보는 저장되지 않는다. 예를 들어 검색내역, 장바구니 내역등은 제3자에게 보여져도 보안상 큰 타격이 없지만, 사용자의 개인정보 내용등은 타인에게 보여지면 안된다.
캐시란 자주 사용하는 데이터나 값을 미리 복사해놓는 임시 장소
- (캐시는 인터넷 환경 뿐만 아니라 다양한 곳에서 사용되는 개념. 컴퓨터 하드웨어 안에서도 정보를 더 빨리 가져오기 위한 cpu캐시등이 있음)
데이터를 서버에 요청하는 과정에는 시간 및 자원이 소모된다. 그러므로 반복적으로 쓰이는 데이터는 매번 서버에 요청하는 것 보다 저장해놨다가 쓰는 것이 효율적. 이때 쓰이는 것이 캐시. 예를 들어 프로필 사진같은 경우는 짧은 시간 단위로 변화하지 않기 때문에, (여기서 짧은 시간은 밀리초 혹은 초 단위) 매번 서버에 요청하는 것 보다는 캐시에서 가져오는 것이 더 효율적임. 그래서 가끔 프로필 사진 바꿔도 새로고침 광클해야 변하는 경우 있는데 그게 프로필 사진이 캐싱돼서 그런거임 ㅇㅇ
세션은 서버가 유저를 구분하기 위해 사용되는 방법이다.
우리가 특정 사이트에 접속하여 글을 쓰기 위해 로그인을 하였다고 가정하자. 그러나 기본적으로 사이트는 로그인을 하기 이전의 사용자와 로그인을 한 이후의 사용자가 동일 인물이라는 것을 알지 못한다.
그렇기 때문에 새로은 글을 작성할 때마다 로그인을 해야한다. 하지만 실제로 우리가 사이트를 이용할때 그런 번거로운 과정을 다 거치지 않는다. 그이유가 바로 "세션"때문이다.
유저가 로그인에 성공하면 서버는 세션 아이디를 사용자에게 전달하고, 사용자는 세션아이디를 쿠키에 저장한다.(그래서 크롬 종료해도 로그인 유지되는거) 서버가 유저로부터 요청을 받을 때 마다 이 세션아이디를 통해 누구의 계정인지 확인하고 요청을 수행함. (영화관에서 티켓내면 보관용만 찢어서 다시 주는거처럼)
이건 나중에 JWT하면서 ㄱ
https://hongong.hanbit.co.kr/
https://devbirdfeet.tistory.com/203