<한줄요약>

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

+ Recent posts