* HTTP Client 와 Session
★ 매우 중요 !!
Connection-Orientied : 전화 : TCP방식 (연결 후 통신)
ㄴStateful : Telnet, FTP (요청에 따른 응답과 재요청을 계속 반복)
ㄴStateless : HTTP (요청할 때마다 새로 연결, 요청과 요청 사이에 데이터 공유불가.)
Connection-less : 택배, 방송, 114전화교환소 : UDP방식 (연결없이 통신하며 일방적으로 연결을 계속 보낸다.)
* HTTP Client 와 Session, ① 쿠키를 이용하여 클라이언트 구분하기
쿠키(Cookie)란 ?
쿠키 정의 :
쿠키는 HTTP 프로토콜을 통해 서버에서 클라이언트에게 전달되는 작은 데이터 조각입니다.
쿠키는 일반적으로 클라이언트의 웹 브라우저에 저장되며,
브라우저는 이후에 같은 서버에 요청을 보낼 때 해당 쿠키를 요청 헤더에 포함시켜 서버로 전송합니다.
이를 통해 서버는 클라이언트를 구분하고, 클라이언트의 상태를 유지할 수 있게 됩니다.
정보를 유지할 수 있는 이유 :
고유한 쿠키는 각 클라이언트(예: 웹 브라우저)마다 다른 값을 가지고 있는 쿠키를 말합니다.
이를 통해 서버는 각 클라이언트를 고유하게 구분하고,
클라이언트의 상태 정보를 유지하며 개인화된 서비스를 제공할 수 있습니다.
쿠키는 이름-값 쌍으로 이루어져 있으며,
일반적으로 다음과 같은 정보를 담을 수 있습니다:
① 세션 ID:
클라이언트를 고유하게 식별하는 값으로, 클라이언트를 구분하여 세션을 유지하는 데 사용됩니다.
서버에서는 이 세션 ID를 사용하여 클라이언트의 상태를 추적합니다.
② 사용자 설정:
사용자의 선호 설정이나 로그인 정보 등을 저장하여 맞춤화된 서비스를 제공합니다.
③ 장바구니 정보:
쇼핑 웹사이트에서 사용자의 장바구니에 추가된 상품 정보 등을 저장하여 장바구니를 유지합니다.
④ 방문 기록:
클라이언트가 방문한 웹 페이지 정보를 저장하여 방문 기록을 추적합니다.
클라이언트가 처음으로 서버에 요청을 보낼 때,
서버는 응답 헤더에 Set-Cookie라는 헤더를 포함하여
쿠키를 클라이언트로 전달합니다.
이 헤더에는 쿠키의 이름, 값, 만료 날짜, 경로 등의 정보가 포함됩니다.
클라이언트는 이 쿠키를 자신의 웹 브라우저에 저장하고,
이후에 같은 서버로 요청을 보낼 때마다 해당 쿠키를 요청 헤더에 포함시켜 서버로 전송합니다.
* HTTP Client 와 Session, ② 같은 클라이언트의 요청들 사이에서 데이터 공유하기
URL과 데이터를 함께 보내야하는 상황에서는 Get 요청 방식을 취하는 것이 좋고,
로그인 같은 경우처럼 이메일&패스워드를 보내면 안되는 경우에는 Post 방식을 취해야한다.
ex)
● GET 요청:
예시: 검색어, 필터, 페이지 번호 등의 조회 요청
● POST 요청:
● method의 Default 값은 get이다.
post 방식의 로그인은 method를 "post"로 변경해주어야한다.
예시: 로그인 정보, 사용자 등록 정보, 글 작성 등의 요청