티스토리 뷰
두 기술 모두 HTTP에서 Connectionless 와 Stateless 한계를 해결 하기 위한 기술이다.
Connectionless(비연결성) : HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성이 있다.
Stateless (상태유지안함) : 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다.
\ | COOKIE | SESSION |
---|---|---|
사용사례 | 장바구니, 오늘 더 이상 창을 보지 않음 | 로그인 정보 유지 |
저장위치 | 클라이언트 | 서버 |
보안 | 위험 | 상대적으로 안전 |
라이프 사이클 | 만료기간 까지 | 만료기간 까지 or 기본적으로 브라우저를 끄면 만료 |
단점 | 클라이언트의 상태정보를 노출될 위험이 있다. | 서버에 저장하기 때문에 서버에 부담이 된다. |
쿠키
- 서버는 Set-Cookie header 값으로 상태를 유지하고 싶은 값을 클라이언트에 전송한다.
- 클라이언트는 Set-Cookie에 담겨 있는 값을 꺼내 이후에 발생하는 모든 요청의 Cookie header로 다시 서버에 전송한다.
- 서버는 클라이언트에서 전송한 Cookie header 값에 따라 이전에 접속한 사용자인지를 판단한다.
세션
- session_id는 서버가 클라이언트를 구분할 수 있게 해주는 key가 된다.
- 세션은 기본으로 Cookie를 사용하는 방법은 동일하다.
- 단, 세션은 클라이언트와 서버간에 저장하고 싶은 데이터를 서버에 저장한 후 이 값에 대한 유일한 ID 값(Session ID라고 한다.)을 발급한다.
- 클라이언트와 서버 사이는 Cookie를 통해 Session Id만 주고 받는다.
- 서버는 클라이언트가 전송한 Session Id를 활용해 서버에 저장된 값을 꺼내와 사용한다.
인증과 같은 보안과 밀접한 관계에 있는 상태정보는 세션에 저장하고, 그밖에 상태를 유지하기 위해 필요한 정보는 쿠키에 저장한다.
[참고자료]
https://cinabrosite.wordpress.com/2017/01/24/cookie_session/
https://jeong-pro.tistory.com/80
'new study' 카테고리의 다른 글
템플릿 콜백 패턴 (0) | 2020.02.17 |
---|---|
PROCESS vs THREAD (0) | 2019.06.30 |
replace vs replaceAll (0) | 2019.06.21 |
GET vs POST (0) | 2019.06.20 |
BufferedReader vs Scanner (2) | 2019.06.02 |
댓글