본문 바로가기
Back-End/node.js

[Node.js] node.js로 cookie 다루기

by blackjack_96 2022. 3. 7.

node.js로 cookie 다루기

 

# 본 포스팅은 egoing님의 생활코딩 강의를 듣고 복습한 것을 정리한 내용입니다

 

const http = require("http");
const cookie = require('cookie');

app = http.createServer(function(request,response){
    // 사용자의 HTTP Request에 Cookie가 존재한다면
    // Cookie를 객체로 Parsing하여 반환하고 출력한다
    if (request.headers.cookie) {
        var cookies = cookie.parse(request.headers.cookie);
        console.log(cookies);
    }

    // HTTP Response를 보낼 때
    // Set- Cookie 헤더를 설정하는 방법
    response.writeHead(200,{
        'Set-Cookie' : ['yummy-cookie=choco','tasty-cookie=strawberry']
    });

    // 해당 Response를 받은 client는 
    // 쿠키쌍 2개를 받게 된다
    // 1. 'yummy-cookie=choco'
    // 2. 'tasty-cookie=strawberry'
    response.end('Cookie!!');
});

app.listen(3000);

 

1. 클라이언트로 쿠키 보내기

클라이언트의 HTTP Request로 호출된 미들웨어의 두 번째 인자 response객체를 이용하여

HTTP Response Header를 조작할 수 있습니다.

조작 방법은 위 코드와 같습니다.

 

2. 클라이언트로부터 받은 쿠키 처리

웹 서버가 클라이언트의 HTTP Request를 받으면

쿠키값은

호출되는 미들웨어의 첫 번째 인자인 request.headers.cookie에 저장되어 나옵니다.

 

 

사용하기 힘든 문자열 형태이므로

이것을 이용하기 편한 객체로 변환(Parsing)하기 위하여

cookie 모듈의 cookie.parse함수를 이용했습니다.

 

3. 확인해보기

Set-Cookie헤더를 통하여 실제 클라이언트에 쿠키가 저장되는지 

Chrome 개발자 도구를 이용하여 확인해 봅시다.

 

 

F12를 눌러 Network탭의 Headers란을 클릭해 보면

 

Set-Cookie 헤더가 설정된 HTTP Response

서버가 클라이언트로 보내는 HTTP Response의 헤더에 

Set-Cookie란이 세팅되어 있습니다.

 

 

이번엔 클라이언트에서 서버로 보내는 HTTP Request를 확인해 봅시다.

위의 HTTP Response를 수신하고 나서 새로고침을 합니다.

 

 

그리고 다시 위처럼 들어가서 HTTP Request Header를 확인해 보면

 

 

HTTP Request에 쿠키가 함께 전송된다

 

 

 

쿠키가 잘 전송되는 것을 확인할 수 있습니다.

쿠키를 서버로부터 부여받은 뒤부터

클라이언트는 서버로 요청을 보낼때마다 위 쿠키를 함께 전송하게 됩니다.

 

 

또한

Network탭을 클릭하여 cookie란을 들어가보면

 

 

이번 요청을 통해 서버로 전송된 쿠키와

이번 응답을 통해 서버로부터 부여받은 쿠키를 볼 수 있습니다.

 

 

그리고 application탭에 가서

Cookies란을 보면

특정 웹 서버로 HTTP Request를 보낼 때

어떠한 쿠키가 같이 전송되는지를 확인할 수 있습니다.