[Network] Cookie와 Session
2022. 3. 30.ㆍ공부/네트워크
728x90
쿠키는 사용자가 방문한 웹사이트에서 사용자의 브라우저에 전송하는 작은 텍스트 조각이다. key(쿠키이름)-value(쿠키값) 쌍으로 이루어져 있는 쿠키는 사이트를 방문한 사용자 웹 브라우저의 내부 저장소에 저장된다. HTTP 통신의 특성 상 웹 브라우저가 서버에 request하면 서버는 요청에 response하고 연결이 끊어지지만, 발급된 쿠키는 지정한 만료 시간까지 클라이언트의 로컬 저장소에 저장이 되어있다.
쿠키가 있으면 로그인한 사용자가 브라우저를 끄더라도, 쿠키의 만료 시간만큼 사용자의 로그인 상태를 유지할 수 있다. 쿠키는 사용자가 삭제할 수 있고, HTTPS가 아닌 HTTP 프로토콜을 사용하는 경우 외부인이 중간에서 쿠키의 값을 가로챌 수 있지만 서버를 여러개 쓰더라도 쿠키값을 공유할 수 있는 장점이 있기 때문에 서버가 여러대인 경우 쿠키를 이용한 로그인 방식을 선호한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 결과 페이지(아이디, 패스워드 일치 시 쿠키 발급)</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
if(id.equals("nuck")) {
if(pw.equals("abcdefg")) {
Cookie user = new Cookie("nuck",id);
response.addCookie(user);
response.sendRedirect("http://localhost:8080/JSPbasic_/login/login_success.jsp");
} else {
response.sendRedirect("http://localhost:8080/JSPbasic_/login/login_fail_password.jsp");
}} else {
response.sendRedirect("http://localhost:8080/JSPbasic_/login/login_fail_id.jsp");
}
%>
</body>
</html>
세션은 클라에 저장되는 쿠키와 달리 서버 내부에 저장한다. 브라우저에서 사용자가 임의로 쿠키를 차단할 수 있는데, 이와 같은 경우에 세션을 사용할 수 있다. 그러나 웹 브라우저를 종료하면 삭제된다. 서버 입장에서 쿠키는 사용자로부터 요청이 올 때 전달받는 문자열일 뿐이지만, 세션은 데이터를 읽기 위한 별도 프로세스를 거쳐 서버에 부담이 될 수 있다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 결과 페이지(아이디, 패스워드 일치 시 세션 발급)</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
if(id.equals("abc1234")) {
if(pw.equals("1111")) {
String is_test = id;
session.setAttribute("s_id",is_test);
response.sendRedirect("session_login_ok.jsp"); }
else {
response.sendRedirect("session_login_fail.jsp"); }
}
else { response.sendRedirect("session_login_fail.jsp"); }
%>
</body>
</html>
'공부 > 네트워크' 카테고리의 다른 글
[Servlet] 도메인을 가진 웹서버 만들기 (0) | 2022.04.13 |
---|---|
[Network] WAS(Web Application Server) (0) | 2022.03.31 |
[Network] Http methods : GET과 POST (0) | 2022.03.29 |
[Network] API, RESTful API (0) | 2022.03.29 |
[Network] OSI 7 Model, TCP/IP Model, IP (0) | 2022.03.04 |