<한줄요약>
Cookie : client측에 저장되는 연결 관련 정보
Session : server측에 저장되는 연결 관련 정보
1. Cookie
Cookie의 필요성
- client에 정보를 유지해야 하는 경우가 있다 (미 로그인 상태의 장바구니/최근 본 목록 등은 서버에서 저장 불가)
- client - server 간 연결 상태를 유지해야 하는 경우가 있다 (로그인 상태를 계속 유지하는 것)
- 요청 - 응답만 수행하고 연결을 해제하는 HTTP로는 해결 불가능
- 해결 : Cookie
- 서버에서 client측에 저장하는 정보, key:value 쌍으로 이루어진다
- 브라우저는 request시 header에 쿠키를 넣어 서버로 전송
- Browser마다 각각 관리된다. ( 크롬에서 naver 로그인을 해도, firefox에선 다시 로그인해야한다)
- Cookie의 사용
- 세션관리, 트래킹(광고), 개인별 맞춤 서비스 등에 이용
- ID저장, 자동로그인, N일간 다시 보지 않기 등등 다 쿠키를 이용한 것이다
- Cookie 구성요소
요소 | 설명 |
name | 각 쿠키별 이름 |
value | 해당 쿠키의 값 |
domain | 쿠키의 전송 domain ex) mypage.com |
path | 쿠키를 전송 세부 경로 ex) /login |
maxAge | 쿠키의 유효기간 |
- Cookie 동작
- client의 page 요청
- server의 Cookie 생성
- Cookie를 포함하여 응답
- Cookie를 PC에 저장. 다음 요청시 Cookie를 함께 전송 (유효기간이 남았다면)
- Cookie 생성/설정하기
//생성하기
Cookie ck = new Cookie(name, value);
//Value, Path, Domain, MaxAge에 대한 getter/setter 존재
//ex) value 획득, 변경하기
String val = ck.getValue();
ck.setValue(val);
//cookie client로 전송
response.addCookie(ck);
//client의 cookie얻기
Cookie[] cks=request.getCookies();
2. Session
- client가 server에 접속해있는 하나의 상태 : session
- session이 만료되었습니다 : 제한 시간이 지나 server에 더이상 해당 session이 존재하지 않는다는 뜻
- server의 메모리에 저장된다
- session동작
- client가 page 요청
- client가 session-id를 보냈다면 해당 id로 session 탐색, 진행
- 보내지 않았다면, 서버에서 신규 session-id 생성 후 client에 반환
- 재접속 시 client는 기존의/새로 받은 session-id를 서버로 보내 즉시 인증
- session-id를 식별자로, 서버 메모리에 저장되는 data
- cookie에 비해 보안이 좋다
- cookie와는 달리 용량제한이 없다
'WEB 공부' 카테고리의 다른 글
[WEB] Jenkins로 CI/CD 구축하기 (0) | 2021.10.05 |
---|---|
[Frontend] 프론트에서 AWS S3에 이미지 압축 / 업로드 / 다운로드 / 삭제하기 (0) | 2021.08.22 |
[WEB] Spring - DI (0) | 2021.05.18 |
[WEB] Backend - EL, JSTL (0) | 2021.05.16 |
[WEB] Backend - Servlet, JSP (0) | 2021.05.16 |
[JAVA] JDBC (0) | 2021.05.16 |
[WEB] Frontend - Bootstrap (0) | 2021.05.15 |