요청(request)에는 한 가지 단점이 있음
쿠키 : 키 = 값의 쌍

쿠키 넣는 것을 직접 구현
const http = require('http');
http.createServer((req, res) => {
console.log(req.url, req.headers.cookie);
res.writeHead(200, { 'Set-Cookie': 'mycookie=test' });
res.end('Hello Cookie');
})
.listen(8083, () => {
console.log('8083번 포트에서 서버 대기 중입니다!');
});
writeHead에 Set-cookie를 설정해주니 아래의 사진과 같이 쿠키에 myCookie가 저장이 된 것을 확인할 수 있다.

http 요청과 응답은 헤더와 본문을 가짐

// 쿠키 유효 시간을 현재시간 + 5분으로 설정
expires.setMinutes(expires.getMinutes() + 5);
res.writeHead(302, {
Location: '/',
'Set-Cookie': `name=${encodeURIComponent(name)}; Expires=${expires.toGMTString()}; HttpOnly; Path=/`,
});
res.end();
쿠키의 정보는 노출되고 수정되는 위험이 있음
const expires = new Date();
expires.setMinutes(expires.getMinutes() + 5);
const uniqueInt = Date.now();
session[uniqueInt] = {
name,
expires,
};
res.writeHead(302, {
Location: '/',
'Set-Cookie': `session=${uniqueInt}; Expires=${expires.toGMTString()}; HttpOnly; Path=/`,
});
위 코드처럼 session에 uniqueInt 라는 고유키를 설정해서 직접적인 데이터가 아닌 데이터를 받아올 수 있는 key를 저장하게 함, uniqueInt를 위에서는 현재 시간으로 지정하였지만 실제에서는 다른 방식으로 고유키를 만드는게 좋음
// 세션쿠키가 존재하고, 만료 기간이 지나지 않았다면
} else if (cookies.session && session[cookies.session].expires > new Date()) {
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end(`${session[cookies.session].name}님 안녕하세요`);
이후 위와 같이 session의 키 값을 넣어서 안의 value를 불러오게 함