더북(TheBook)

이제 서버에서 직접 쿠키를 만들어 요청자의 브라우저에 넣어보겠습니다.

cookie.js

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번 포트에서 서버 대기 중입니다!');
  });

콘솔

$ node cookie
8083번 포트에서 서버 대기 중입니다!

쿠키는 name=zerocho;year=1994처럼 문자열 형식으로 존재합니다. 쿠키 간에는 세미콜론을 넣어 각각을 구분합니다.

createServer 메서드의 콜백에서는 req 객체에 담겨 있는 쿠키를 가져옵니다. 쿠키는 req.headers.cookie에 들어 있습니다. req.headers는 요청의 헤더를 의미합니다. 조금 전에 쿠키는 요청과 응답의 헤더를 통해 오간다고 이야기했지요?

응답의 헤더에 쿠키를 기록해야 하므로 res.writeHead 메서드를 사용했습니다. Set-Cookie는 브라우저한테 다음과 같은 값의 쿠키를 저장하라는 의미입니다. 실제로 응답을 받은 브라우저는 mycookie=test라는 쿠키를 저장합니다.

localhost:8083에 접속합니다. req.urlreq.headers.cookie에 대한 정보를 로깅하도록 했으며, req.url은 주소의 pathsearch 부분을 알립니다.

화면에는 Hello Cookie가 뜨고 콘솔에서는 다음과 같은 메시지를 볼 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.