1 분 소요



📖 Cookie

웹브라우저는 기본적으로 cookie(쿠키)라는 것을 지원합니다. 쿠키를 활용하면 서버로부터 받은 데이터 중 일부를 브라우저 자체적으로 저장해놓고 추후 활용할 수 있습니다. 따라서 사용자가 브라우저를 사용하는 동안은 이러한 쿠키를 기반으로 정보가 저장 및 관리될 수 있다는 것입니다. 이러한 cookie를 관리하려면 node.js express에서는 별도의 패키지가 필요합니다.

```패키지 설치 $ npm install cookie-parser


cookie-parser는 이러한 브라우저의 쿠키데이터를 node.js가 확인하고 관리할 수 있도록 도와주는 패키지(미들웨어)입니다.

<br>
<br>

# 📖 사용예제

```js
var express = require("express");
var cookieParser = require("cookie-parser");

var app = express();
app.use(cookieParser());

app.get("/", function (req, res) {
  if (req.cookies.count) {
    var count = req.cookies.count;
  } else {
    req.cookies.count = 0;
  }
  console.log("Cookies: ", req.cookies);
  res.cookie("count", count + 1);
});
  • app.use(cookieParser())로 모든 쿠키값을 정상적으로 확인할 수 있도록 앞서 처리합니다.
  • req.cookies로 현재 브라우저의 쿠키값들을 확인할 수 있습니다.
  • res.cookie로 현재 브라우저에게 특정 쿠키값을 전달할 수 있습니다.
  • 위 페이지는 쿠키값에서 count값을 받아 매번 1씩 더한다음 다시 브라우저의 쿠키를 설정하는 작업을 수행하고 있다.



📖 Cookie & Security

대부분의 쿠키는 외부에 노출되어선 안됩니다. 따라서 기본적인 암호화가 필요합니다.

var express = require("express");
var cookieParser = require("cookie-parser");

var app = express();
app.use(cookieParser("SECURITY KEY"));

app.get("/", function (req, res) {
  if (req.signedCookies.count) {
    var count = req.signedCookies.count;
  } else {
    req.cookies.count = 0;
  }
  console.log("Cookies: ", req.signedCookies);
  res.cookie("count", count + 1, { signed: true });
});
  • app.use(cookieParser(‘SECURITY KEY’))로 쿠키값을 암호화하여 관리할 수 있습니다.
  • 쿠키값들을 불러올 때도 req.signedCookies를 활용해야 불러올 수 있습니다.
  • 쿠키를 브라우저상에 새로 설정할때도 {signed: true} 옵션을 주어 암호화된 값을 넘겨주도록 합니다.


  • Session cookie : 웹브라우저가 켜져있을 때만 유효 합니다 (재실행시 사라짐)
  • Permanent cookie : 웹브라우저를 재실행해도 유지됩니다
res.cookie("myCookie", "set Cookie", { maxAge: 3000 }); // 초단위

아무것도 설정하지 않으면 Session cookie가 되고, maxAge 혹은 expires로 만료기간을 설정하면 Permanent cookie가 됩니다.



그 외 다양한 쿠키의 옵션

사용자의 컴퓨터가 현재 가지고 있는 쿠키를 확인 하는 방법은 req.cookies.[cookie name] 입니다.

쿠키를 저장하는 방법은 res.cookie(‘cookie name’, ‘cookie value’, option)입니다.

res.cookie() 메소드는 쿠키의 옵션을 설정 할 수 있습니다.

maxAge: 쿠키의 만료 시간을 밀리초 단위로 설정

expires: 쿠키의 만료 시간을 표준 시간 으로 설정

path: 쿠키의 경로 (default: /)

domain: 쿠키의 도메인 이름 (default: loaded)

secure: HTTPS 프로토콜만 쿠키 사용 가능

httpOnly: HTTP 프로토콜만 쿠키 사용 가능

signed: 쿠키의 서명 여부를 결정

댓글남기기