많이 들어보긴 했는데 누가 이게 뭐냐고 물어보면 대답 못 함.
어제 강의에서 쿠키에 대해서 잠깐 설명했는데 워낙 대략적으로 설명하고 넘어가서 이해가 안 됨.
이번 기회에 정리하고 넘어가려고 함.
강의에서 '쿠키' 라는 개념은 HTTP의 무상태성과 비연결성에 대해 설명할 때 나왔음.
서버는 클라이언트의 상태를 보존하지 않음. 계속 연결되어 있지 않기 때문에 서버의 자원을 효율적으로 사용할 수 있지만 서버가 클라이언트를 식별할 수 없게 됨.
이 경우에는 페이지를 이동하면 요청한 클라이언트의 정보를 저장 할 수 없고 새로고침을 할 때마다 로그인을 해야 함.
이런 문제를 해결하기 위해 쿠키
와 세션
이라는 기술을 사용함.
HTTP 헤더에 포함되는 정보중 하나로 클라이언트의 브라우저에 저장되는 작은 기록 파일.
Key-Value
형식이고 보안에 취약한 편이라 노출되어도 상관 없는 정보를 담는데에 사용.
- 클라이언트
요청(쿠키없음)
→ 서버- 서버
응답(set-cookie)
→ 클라이언트브라우저에 쿠키 저장
- 클라이언트
요청(cookie)
→ 서버쿠키로 클라이언트 정보 식별
세션은 서버측에 저장하는 중요한 정보. 보통 브라우저를 종료할 때 까지 유지됨.
세션 ID 자체는 유의미한 개인 정보를 담지 않지만 해커카 세션 ID 탈취해 클라이언트인 척 위장할 수 있음.
- 클라이언트
로그인 요청
→ 서버인증 성공시 세션 ID 발급
- 서버
응답(쿠키에 세션 ID 포함)
→ 클라이언트- 클라이언트
요청(세션ID in cookie)
→ 서버세션 ID로 클라이언트 판별
다시 사용될 가능성이 높은 데이터를 로컬의 임시저장소에 저장해두고 재사용.
이미지, 사진 파일 등 용량이 큰 파일의 경우 매번 다시 받을 경우 시간이 오래 걸리기 때문에 캐시를 사용함으로써 페이지 로딩 속도가 빨라질 수 있음.
단, 변경이 잦은 데이터의 경우 이전 캐시가 삭제되기 전까지 변경된 값이 아닌 이전 데이터만을 가져올 가능성 이있으니 이 부분을 고려해야 함.