본문 바로가기

Programming/Node.js

5. http 모듈로 서버 만들기 (3) - 쿠키와 세션의 이해 [6]

node js logo image

 

 

 

 

앞선 아티클에서는 최초로 로그인을 한 다음, res를 보내면서 Set-Cookie로 쿠키 정보를 보낸다고 했습니다. 여기서는 만료 시간(Expire)이나 HttpOnly등과 같은 옵션이 부여되었습니다. 쿠키를 설정할 때는 이러한 다양한 종류의 옵션을 부여해 설정이 가능합니다. 복수의 옵션을 부여할 때는 세미콜론으로 구분하게 됩니다. 

 

여기에 제한 사항은, 한글과 줄바꿈은 입력할 수 없다는 점 입니다. 앞서 설명했듯이, 한글의 경우 encodeURIComponent로 감싸서 넣게 됩니다. 

 

 

[cookie2.js]

//생략

http.createServer(async (req, res) => {
    const cookies = parseCookies(req.headers.cookie);

    // 주소가 /login으로 시작하는 경우
    if(req.url.startsWith('/login')) {
        const url = new URL(req.url, 'http://localhost:8084');
        const name = url.searchParams.get('name');
        const expires = new Date();
        // 쿠키의 유효 시간은 현재 시각 + 5분으로 설정한다.
        expires.setMinutes(expires.getMinutes() + 5);
        res.writeHead(302, {
            Location: '/',
            'Set-Cookie': `name=${encodeURIComponent(name)}; Expires=${expires.toGMTString()}; HttpOnly; Path=/`,
        });
        res.end();

// 후략

 

 

 

  • 쿠키명 = 쿠키값 : 가장 기본적인 쿠키의 값을 설정하는 방식입니다. mycookie=testname, name=jack과 같이 설정합니다.
  • Expires=날짜 : 만료 기한으로, 이 기한이 지나면 쿠키가 제거됩니다. 기본 값은 클라이언트 종료 시점까지 입니다. 
  • Max-age=초 : Expire와 유사하지만 날짜 대신 초를 입력합니다. 해당 초가 지나면 쿠키가 제거되는데, Expires보다 우선합니다.
  • Domain=도메인 명 : 쿠키가 전송될 도메인을 특정합니다. 기본 값은 당연히 현재 도메인 입니다. 
  • Path=URL : 쿠키가 전송될 URL을 특정합니다. 기본 값은 '/'이고, 이 경우 모든 URL에서 쿠키를 전송할 수 있습니다. 
  • Secure : HTTPS일 경우에만 쿠키가 전송됩니다. 
  • HttpOnly : 설정 시 자바스크립트에서 쿠키에 접근할 수 없습니다. 쿠키의 임의 조작을 방지하기 위해서 설정합니다.