쿠키(Cookies)
특징:
- 웹 사이트 방문 시
사용자의 컴퓨터에 저장되는 작은 텍스트 파일입니다.
- 사용자의 선호, 로그인 상태, 장바구니 정보 등을 저장할 수 있습니다.
예시 코드:
function setCookie(name, value, days) {
let expires = "";
if (days) {
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
function getCookie(name) {
const nameEQ = name + "=";
const ca = document.cookie.split(';');
for(let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
setCookie('user', 'John Doe', 7);
const user = getCookie('user');
장점:
- 간단한 정보를
클라이언트 측에서 빠르게 저장하고 접근할 수 있습니다.
- 서버 부하를 줄일 수 있습니다.
단점:
보안에 취약할 수 있습니다.
- 사용자의 브라우저에 저장되므로
저장 공간이 제한적입니다.
사용 이유:
- 사용자 경험을 개선하기 위해, 예를 들어 로그인 상태 유지, 사용자 선호 설정 등을 위해 사용됩니다.
세션(Sessions)
특징:
서버 측에서 사용자 정보를 저장합니다.
- 쿠키를 이용하여 세션 ID를 클라이언트에 저장하고, 이를 통해 사용자를 식별합니다.
예시 코드:
const express = require('express');
const session = require('express-session');
const app = express();
app.use(session({
secret: 'yourSecretKey',
resave: false,
saveUninitialized: true,
}));
app.get('/', (req, res) => {
if (req.session.page_views) {
req.session.page_views++;
res.send("You visited this page " + req.session.page_views + " times");
} else {
req.session.page_views = 1;
res.send("Welcome to this page for the first time!");
}
});
app.listen(3000);
장점:
보안이 쿠키보다 강화됩니다.
- 데이터가 서버에 저장되므로
더 많은 정보를 안전하게 저장할 수 있습니다.
단점:
- 서버의 메모리를 사용하기 때문에 대규모 트래픽을 처리할 때 서버에 부담을 줄 수 있습니다.
사용 이유:
- 로그인 세션 관리, 사용자의 상태를 서버 측에서 관리해야 하는 경우 사용됩니다. 예를 들어, 온라인 쇼핑의 장바구니 기능이나 로그인 상태 유지 등에 활용됩니다.