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
   15   16   17   18   19   20   21   22   23