[Node.js] Cookie

유동균·2023년 2월 5일
1

Node.js

목록 보기
5/11
post-thumbnail
post-custom-banner

현대의 웹은 HTTP 프로토콜로 이루어져있고, HTTP가 가지는 비연결성(Connectionless)과 비상태성(Stateless) 특성 때문에 사용자와의 연결이 유지되지않고, 연결 해제 후에도 상태 정보를 저장하지않는다. 물론 서버의 자원 절약이라는 장점도 있지만, 사용자 식별이 불가하기 때문에 매번 새로운 사용자로 인식하는 단점이 있지만, 쿠키(Cookie) 및 세션(Session) 인증 방식을 통해 클라이언트의 상태정보를 지속적으로 가져오고, 이에 알맞는 정보 및 화면을 제공할 수 있으며, HTTP의 비상태, 비연결 적인 특성들을 보완할 수 있다.

1. Cookie란?

  • 쿠키(cookie)는 웹 클라이언트(사용자의 웹 브라우저)와 웹 서버(Express)간에 통신하면서 정보를 저장하고 유지하는 기술이다.
  • 쿠키는 웹 사이트에서 특정 정보(사용자 ID, 선호 언어, 쇼핑 카트 내용 등)를 저장하고 전송하는 데 사용된다.
  • Express에서는 cookie-parser 미들웨어를 사용하여 쿠키를 생성, 저장, 확인할 수 있다.

예를 들어, 사용자가 웹사이트에 로그인을 할 때, 서버는 사용자의 아이디와 비밀번호를 인증하고 쿠키를 클라이언트에 저장한다. 그 다음에 사용자가 웹사이트에 다시 접속할 때, 클라이언트는 저장된 쿠키를 서버에 전송하여, 서버는 이 쿠키를 통해 사용자를 식별한다.
즉, 쿠키는 웹사이트에서 사용자 정보를 저장하고 공유하는데 사용되는 기술이다.

2. cookie-parser Middleware

  • Cookie-parser 미들웨어는 Express에서 쿠키를 관리하는 데 사용되는 미들웨어다.

  • 쿠키는 클라이언트(브라우저)와 서버 간에 데이터를 저장하고 교환하는데 사용되는 기술이다.

  • cookie-parser 미들웨어를 사용하면, 서버에서 클라이언트에서 보낸 쿠키를 추출하고, 클라이언트에 새로운 쿠키를 저장할 수 있다.

  • cookie-parser Middleware는 Express에서 HTTP 요청과 응답에서 쿠키를 관리하는 미들웨어이다.

    쿠키는 웹 브라우저에서 저장하는 작은 텍스트 파일로, 웹 사이트에 방문할 때마다 같이 전송되어 사용자의 활동 정보를 저장할 수 있다.

  • cookie-parser Middleware는 Express에서 쿠키를 파싱(parsing)하여 개발자가 쉽게 접근하여 사용할 수 있도록 합니다. 이를 사용하면, 예를 들어, 사용자의 로그인 상태, 장바구니 내역 등을 저장하여 매번 요청할 필요 없이 쉽게 접근할 수 있습니다.

    "Parsing"은 자료 구조(문자열, 파일, 데이터 베이스 등)를 구성하는 구성 요소들을 분석하여, 프로그래머가 이해하기 쉽게 데이터를 구조화하는 것을 의미

2.1 Install

> npm i cookie-parser

2.2 Import

const cookieParser = require("cookie-parser");

2.3 Usage

  • 쿠키를 사용하기 위해 HTTP 요청과 응답에서 쿠키를 읽고 쓸 수 있도록 작업
app.use(cookieParser()); // cookie-parser 미들웨어 사용


app.get('/', (req, res) => {
  // 쿠키 읽기
  let favoriteCookie = req.cookies.favoriteCookie;
  console.log(favoriteCookie);

  // 쿠키 쓰기
  res.cookie('favoriteCookie', 'Chocolate Chip', {maxAge: 900000, httpOnly: true});

  res.send('Cookie created!');
});
  • 위의 예제에서는 이름이 "favoriteCookie"인 쿠키를 생성하고, 다시 읽어오는 과정.
  • 쿠키의 속성, 예를 들어 maxAge와 httpOnly,도 설정할 수 있습니다.

쿠키의 속성

  • name: 쿠키의 이름.
  • value: 쿠키의 값.
  • maxAge : 만료 시간을 밀리초 단위로 설정 (쿠키가 만료되지 않으려면, 만료 시간을 지정하지 않아야 한다.)
  • expires : 만료 날짜를 GMT 시간으로 설정 (쿠키가 만료되지 않으려면, 만료 시간을 지정하지 않아야 한다.)
  • path : cookie가 적용될 URL 경로, default “/“
  • domain : 도메인 네임, default “loaded”
  • secure : https에서만 cookie 사용할 수 있도록 한다.
  • httpOnly : 웹서버를 통해서만 cookie 접근할 수 있도록 한다
  • signed : cookie가 서명되어야 할 지를 결정한다.
    이 외에도 다른 속성들이 있을 수 있다.

2.4 애플리케이션을 실행하고 쿠키를 테스트

3. Cookie의 종류

유효 기간은 쿠키 생성 시 expires 속성으로 지정할 수 있습니다. 만약 expires 속성이 지정되지 않으면, 세션 쿠키로 취급됩니다.

  • 세션 쿠키는 사용자가 웹사이트에 방문할 때마다 생성되고, 브라우저를 닫으면 소멸되는 임시 쿠키이다.
  • 일반적으로 디스크 대신 메모리에 저장되고, 사용자가 브라우저를 닫을 때 삭제된다.
  • 영구 쿠키는 설정된 만료일 또는 시간이 있으며, 사용자의 디스크에 저장된다.
  • 영구 쿠키는 웹사이트에 방문한 사용자가 브라우저를 닫아도 계속 저장되고, 다음에 사용자가 웹 사이트에 방문할 때도 액세스 가능하다.
post-custom-banner

0개의 댓글