쿠키와 세션은 HTTP프로토콜의 약점을 보완하기 위해 존재한다.
HTTP프로토콜의 경우 클라이언트가 정보를 요청하고 서버가 응답하는 방식인데
이러한 통신이 끝나면 서로 접속을 끊고, 클라이언트와 서버간의 상태 정보는 유지되지 않는다.
이러한 특성때문에 통신을 유지하고 있으면 드는 자원 낭비를 크게 줄일 수 있다는 장점이 있지만,
클라이언트와 서버간의 정보가 유지되지 않으므로 계속해서 인증을 해야한다는 단점이 있다.
이러한 단점을 쿠키와 세션으로 해결할 수 있다.
쿠키(Cookie)
- 쿠키는 클라이언트에 저장되는 키와 값이 쌍으로 이루어진 작은 데이터 파일
- 이름, 값, 만료 날짜, 경로 정보가 들어있다.
- 일정 시간동안 데이터를 저장할 수 있어서 로그인 상태를 유지
- 클라이언트 상태 정보를 하드디스크에 저장하였다가 필요 시 참조, 재사용
쿠키(Cookie)의 제약조건
- 클라이언트에 총 300개까지 쿠키를 저장할 수 있다.
- 하나의 도메인 당 20개의 값만 가질 수 있다.
쿠키는 사용자가 요청하지 않아도 브라우저는 Request시 Header에 넣어서 서버로 전송한다.
세션(Session)
- 세션은 클라이언트와 웹서버 간 네트워크 연결이 지속 유지되고 있는 상태를 말한다. (클라이언트의 상태)
- 사용자가 브라우저를 열어 서버에 접속한 뒤 접속을 종료할 때 까지를 말함
쿠키(Cookie)와 세션(Session)의 차이점
- 가장 큰 차이점은 저장되는 위치이다. 쿠키는 클라이언트에 저장되고, 세션은 서버에 저장된다.
- 쿠키는 서버의 자원을 전혀 사용하지 않는다. 세션은 서버 부하를 줄 수 있다.
- 쿠키는 클라이언트에 저장되어 있어 속도가 빠르다.
- 세션은 서버에 저장되어있기 때문에 쿠키보다 보안 측면에서 우수하다.
※ 참조 : interconnection.tistory.com
'Programming > Java & JSP & Spring' 카테고리의 다른 글
Polling과 Long Polling (0) | 2017.11.04 |
---|---|
OAuth2.0 란? (0) | 2017.11.04 |
[Java] 최대값과 최소값 구하기 (0) | 2017.11.02 |
[Java] 문자열을 변환하기 전 정수형인지 확인하는 방법 (0) | 2017.11.02 |
[Java] 날짜 비교 (0) | 2017.11.02 |