웹 서버가 브라우저에게 지시하여 사용자 로컬 컴퓨터에 저장하는 4k 이하의 작은 데이터입니다. 쿠키는 HTTP가 무상태 프로토콜이라는 약점을 보완하기 위해 도입했으며, name=value 형태로 저장됩니다.
Node.js에서 쿠키를 다루려면 클라리언트와 서버 간의 HTTP 요청과 응답의 Set-Cookie
헤더를 통해 쿠키 데이터를 주고받습니다. Node.js는 기본적으로 쿠키 관련 라이브러리를 포함하지 않으므로, 쿠키를 쉽게 관리하려면 cookie-parser
와 같은 미들웨어나 cookies
패키지를 사용하면 편리합니다.
쿠키를 설정할 때는 Set-Cookie
헤더를 사용해 응답을 보냅니다. 쿠키는 브라우저가 저장하며, 이후 요청 시 자동으로 전송됩니다.
npm install express cookie-parser
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());
// 쿠키 설정
app.get('/set-cookie', (req, res) => {
res.cookie('name', 'John Doe', { maxAge: 900000, httpOnly: true });
res.send('쿠키가 설정되었습니다.');
});
maxAge
옵션으로 쿠키의 수명을 900초로 설정하고, httpOnly: true
를 추가하여 클라이언트 쪽 자바스크립트가 쿠키에 접근할 수 없도록 설정했습니다.
쿠키는 req.cookies
객체를 통해 읽을 수 있습니다.
app.get('/get-cookie', (req, res) => {
const name = req.cookies.name;
if (name) {
res.send(`쿠키 값: ${name}`);
} else {
res.send('쿠키가 없습니다.');
}
});
쿠키를 삭제하려면 res.clearCookie()
메서드를 사용하여 쿠키를 클라이언트 쪽에서 제거할 수 있습니다.
app.get('/clear-cookie', (req, res) => {
res.clearCookie('name');
res.send('쿠키가 삭제되었습니다.');
});
maxAge
: 쿠키의 수명을 밀리초 단위로 설정합니다.expires
: 쿠키의 만료 시간을 지정합니다.httpOnly
: 쿠키가 HTTP 요청에서만 접근 가능하도록 합니다.secure
: HTTPS에서만 쿠키를 전송하도록 설정합니다.sameSite
: 쿠키가 요청하는 사이트에서만 전송되도록 합니다. (Strict, Lax, None)cookie-parser
없이도 Node.js의 기본 http 모듈을 사용해 쿠키를 설정할 수 있습니다.
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/set-cookie') {
res.writeHead(200, {
'Set-Cookie': 'name=John Doe; Max-Age=900; HttpOnly'
});
res.end('쿠키가 설정되었습니다.');
} else if (req.url === '/get-cookie') {
const cookies = req.headers.cookie;
res.end(`쿠키: ${cookies}`);
} else {
res.end('다른 경로입니다.');
}
});
server.listen(3000, () => {
console.log('서버가 3000번 포트에서 시작되었습니다.');
});
✅ 참고