
Cookie란?
- 쿠키(Cookie)는 웹 서버가 사용자의 웹 브라우저에 저장하는 작은 데이터 조각
- 쿠키는 사용자 인증, 세션 관리, 사용자 맞춤 설정 등을 위해 사용
- 브라우저가 서버에 HTTP 요청을 보낼 때 쿠키 데이터를 함께 전송
Cookie의 동작 방식
- 사용자가 웹사이트에 방문하면 서버가 쿠키를 생성
- 서버는 HTTP 응답을 통해 쿠키를 클라이언트(브라우저)에 전송
- 브라우저는 쿠키를 저장하고 이후 해당 웹사이트에 재접속할 때 요청에 쿠키를 포함
- 서버는 전송된 쿠키를 읽어 사용자를 식별하거나 이전 설정을 복원
pip 설치 명령어
npm install express cookie-parser
실습결과
- Node.js와 Express를 사용하여 쿠키 생성, 조회, 삭제의 기능을 구현
- 암호화되지 않은 쿠키와 암호화된 쿠키의 설정과 관리 방법을 비교하며 학습
사용한 코드
cookie.js
const express = require("express");
const cookieParser = require("cookie-parser");
const app = express();
const PORT = 8080;
app.use(cookieParser("secret Key"));
app.set("view engine", "ejs");
const cookieConfig = {
maxAge: 10 * 60 * 1000,
httpOnly: true,
signed: true,
};
const cookieConfig2 = {
maxAge: 10 * 60 * 1000,
httpOnly: true,
path: "/abc",
};
app.get("/abc", (req, res) => {
res.cookie("abc-page", "abc page cookie", cookieConfig2);
res.render("cookie-another");
});
app.get("/", (req, res) => {
res.render("cookie");
});
app.get("/getCookie", (req, res) => {
console.log("암호화된 쿠키", req.signedCookies);
res.send(req.signedCookies);
});
app.get("/setCookie", (req, res) => {
res.cookie("myCookie", "cookie~~~", cookieConfig);
res.send("set cookie 완료, 응답 종료!");
});
app.get("/clearCookie", (req, res) => {
res.clearCookie("myCookie", "cookie~~~", cookieConfig);
res.send("clear cookie, 응답 종료!");
});
app.listen(PORT, () => {
console.log(`http://localhost:${PORT}`);
});
cookie.ejs
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>cookie</title>
</head>
<body>
<h1>쿠키 확인하기</h1>
<a href="/setCookie">쿠키 설정</a>
<a href="/getCookie">쿠키값 가져오기</a>
<a href="/clearCookie">쿠키 삭제</a>
<script>
console.log("document.cookie", document.cookie);
</script>
</body>
</html>
cookie-another.ejs
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<h1>다른 페이지에서 쿠키 확인할 수 있는지 보기</h1>
</body>
</html>
주요 기능 정리
- 쿠키 설정
- 암호화되지 않은 쿠키 및 암호화된 쿠키 설정 가능.
- 쿠키 수명, 접근 제한, 경로 제한 등 다양한 옵션 제공.
- 쿠키 조회
- 저장된 쿠키 정보를 콘솔에 출력.
- 암호화된 쿠키는
req.signedCookies를 통해 확인.
- 쿠키 삭제
학습 요약
- 쿠키의 기본 개념과 동작 원리를 이해함.
- Node.js의
cookie-parser 미들웨어를 활용하여 쿠키 관리 기능을 구현함.
- 암호화된 쿠키를 통해 보안성을 강화함.