Page 20 -
P. 20
쿠키는 요청과 응답의 헤더(header)에 저장됩니다. 요청과 응답은 각각 헤더와 본문(body)을 가집
니다. 헤더와 본문에 대해서는 조금 뒤에 살펴봅니다.
이제 서버에서 직접 쿠키를 만들어 요청자의 브라우저에 넣어보겠습니다.
4
server3.js
const http = require('http');
const parseCookies = (cookie = '') => http 모듈로 웹 서버 만들기
cookie
.split(';')
.map(v => v.split('='))
.map(([k, //.vs]) => [k, vs.join('=')])
.reduce((acc, [k, v]) => {
acc[k.trim()] = decodeURIComponent(v);
return acc;
}, {});
http.createServer((req, res) => {
const cookies = parseCookies(req.headers.cookie);
console.log(req.url, cookies);
res.writeHead(200, { 'Set-Cookie': 'mycookie=test' });
res.end('Hello Cookie');
})
.listen(8082, () => {
console.log('8082번 포트에서 서버 대기 중입니다!');
});
콘솔
$ node server3
8082번 포트에서 서버 대기 중입니다!
parseCookies라는 함수를 직접 만들어보았습니다. 쿠키는 name=zerocho;year=1994처럼 문자열
형식으로 오므로 이를 { name: 'zerocho', year: '1994' }와 같이 객체로 바꾸는 함수입니다.
createServer 메서드의 콜백에서는 제일 먼저 req 객체에 담겨 있는 쿠키를 분석합니다. 쿠키는
req.headers.cookie에 들어 있습니다. req.headers는 요청의 헤더를 의미합니다. 좀 전에 쿠키는
요청과 응답의 헤더를 통해 오고 간다고 이야기했지요?
응답의 헤더에 쿠키를 기록해야 하므로 res.writeHead 메서드를 사용하였습니다. 첫 번째 인자
로 200이라는 상태 코드를 넣어두었습니다. 200은 성공이라는 의미입니다. 다른 상태 코드에
139
node_06.indd 139 2018-07-20 오전 10:26:43