Node.js에서 쿠키는 클라이언트(주로 브라우저)와 서버 간에 작은 데이터를 저장하고 전송하는 데 사용됩니다. 서버는 클라이언트에 쿠키를 설정하고, 클라이언트는 요청마다 해당 쿠키를 서버로 전송합니다. 쿠키는 세션 관리, 사용자 인증, 사용자 설정 등을 위해 자주 사용됩니다.
secure 옵션을 사용할 수 있으며, 브라우저 스크립트에서 접근할 수 없도록 HttpOnly 옵션을 설정할 수 있습니다.Node.js에서 쿠키를 사용하려면 cookie-parser 미들웨어를 자주 사용합니다. 이 미들웨어는 쿠키를 설정하거나 요청 시 쿠키를 읽는 작업을 쉽게 해줍니다.
cookie-parser 설치npm install cookie-parser
cookie-parser 사용Express 애플리케이션에서 cookie-parser 미들웨어를 설정하고 사용하는 방법은 다음과 같습니다.
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
const port = 3000;
// 쿠키 파서 미들웨어 등록
app.use(cookieParser());
// 쿠키 설정 예제
app.get('/set-cookie', (req, res) => {
res.cookie('username', 'john_doe', { maxAge: 900000, httpOnly: true });
res.send('쿠키가 설정되었습니다.');
});
// 쿠키 확인 예제
app.get('/get-cookie', (req, res) => {
const username = req.cookies['username'];
res.send(`저장된 쿠키 값: ${username}`);
});
// 쿠키 삭제 예제
app.get('/clear-cookie', (req, res) => {
res.clearCookie('username');
res.send('쿠키가 삭제되었습니다.');
});
app.listen(port, () => {
console.log(`서버가 http://localhost:${port}에서 실행 중입니다.`);
});
res.cookie()쿠키를 설정할 때 사용하는 메서드입니다. 다음과 같은 옵션을 설정할 수 있습니다.
res.cookie('name', 'value', { maxAge: 900000, httpOnly: true });
쿠키 옵션:
maxAge: 쿠키의 수명을 밀리초 단위로 설정 (예: 1000 * 60 * 60 * 24는 1일).expires: 쿠키 만료 날짜를 명시적으로 설정 (Date 객체로 전달).httpOnly: true로 설정하면 클라이언트의 JavaScript에서 쿠키에 접근할 수 없습니다. 보안 상의 이유로 자주 사용됩니다.secure: true로 설정하면 HTTPS를 통해서만 쿠키가 전송됩니다.path: 쿠키가 유효한 경로를 설정 (/가 기본값).domain: 쿠키가 유효한 도메인을 설정.req.cookiescookie-parser를 사용하면, 요청 객체 req에서 req.cookies를 통해 쿠키에 접근할 수 있습니다. 이 객체는 클라이언트가 전송한 쿠키를 담고 있습니다.
const username = req.cookies['username'];
res.clearCookie()쿠키를 삭제할 때 사용하는 메서드입니다.
res.clearCookie('username');
res.cookie('token', '123456', { httpOnly: true });res.cookie('token', '123456', { secure: true });res.cookie('token', '123456', { sameSite: 'Strict' });로그인 후 세션 관리를 위해 토큰을 저장하는 쿠키 설정 예시입니다.
app.post('/login', (req, res) => {
const token = createJWT(req.body.username);
res.cookie('token', token, { httpOnly: true, secure: true, maxAge: 3600000 }); // 1시간 유지
res.send('로그인 성공');
});
app.get('/profile', (req, res) => {
const token = req.cookies['token'];
if (token) {
const userData = verifyJWT(token); // JWT 검증 함수
res.send(`환영합니다, ${userData.username}`);
} else {
res.status(401).send('인증되지 않은 사용자입니다.');
}
});
cookie-parser는 Node.js에서 쿠키를 쉽게 설정하고 읽는 데 사용되는 미들웨어입니다.