현대의 웹은 HTTP 프로토콜로 이루어져있고, HTTP가 가지는 비연결성(Connectionless)과 비상태성(Stateless) 특성 때문에 사용자와의 연결이 유지되지않고, 연결 해제 후에도 상태 정보를 저장하지않는다. 물론 서버의 자원 절약이라는 장점도 있지만, 사용자 식별이 불가하기 때문에 매번 새로운 사용자로 인식하는 단점이 있지만, 쿠키(Cookie) 및 세션(Session) 인증 방식을 통해 클라이언트의 상태정보를 지속적으로 가져오고, 이에 알맞는 정보 및 화면을 제공할 수 있으며, HTTP의 비상태, 비연결 적인 특성들을 보완할 수 있다.
예를 들어, 사용자가 웹사이트에 로그인을 할 때, 서버는 사용자의 아이디와 비밀번호를 인증하고 쿠키를 클라이언트에 저장한다. 그 다음에 사용자가 웹사이트에 다시 접속할 때, 클라이언트는 저장된 쿠키를 서버에 전송하여, 서버는 이 쿠키를 통해 사용자를 식별한다.
즉, 쿠키는 웹사이트에서 사용자 정보를 저장하고 공유하는데 사용되는 기술이다.
Cookie-parser 미들웨어는 Express에서 쿠키를 관리하는 데 사용되는 미들웨어다.
쿠키는 클라이언트(브라우저)와 서버 간에 데이터를 저장하고 교환하는데 사용되는 기술이다.
cookie-parser 미들웨어를 사용하면, 서버에서 클라이언트에서 보낸 쿠키를 추출하고, 클라이언트에 새로운 쿠키를 저장할 수 있다.
cookie-parser Middleware는 Express에서 HTTP 요청과 응답에서 쿠키를 관리하는 미들웨어이다.
쿠키는 웹 브라우저에서 저장하는 작은 텍스트 파일로, 웹 사이트에 방문할 때마다 같이 전송되어 사용자의 활동 정보를 저장할 수 있다.
cookie-parser Middleware는 Express에서 쿠키를 파싱(parsing)하여 개발자가 쉽게 접근하여 사용할 수 있도록 합니다. 이를 사용하면, 예를 들어, 사용자의 로그인 상태, 장바구니 내역 등을 저장하여 매번 요청할 필요 없이 쉽게 접근할 수 있습니다.
"Parsing"은 자료 구조(문자열, 파일, 데이터 베이스 등)를 구성하는 구성 요소들을 분석하여, 프로그래머가 이해하기 쉽게 데이터를 구조화하는 것을 의미
> npm i cookie-parser
const cookieParser = require("cookie-parser");
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!');
});
쿠키의 속성
- name: 쿠키의 이름.
- value: 쿠키의 값.
- maxAge : 만료 시간을 밀리초 단위로 설정 (쿠키가 만료되지 않으려면, 만료 시간을 지정하지 않아야 한다.)
- expires : 만료 날짜를 GMT 시간으로 설정 (쿠키가 만료되지 않으려면, 만료 시간을 지정하지 않아야 한다.)
- path : cookie가 적용될 URL 경로, default “/“
- domain : 도메인 네임, default “loaded”
- secure : https에서만 cookie 사용할 수 있도록 한다.
- httpOnly : 웹서버를 통해서만 cookie 접근할 수 있도록 한다
- signed : cookie가 서명되어야 할 지를 결정한다.
이 외에도 다른 속성들이 있을 수 있다.
유효 기간은 쿠키 생성 시 expires 속성으로 지정할 수 있습니다. 만약 expires 속성이 지정되지 않으면, 세션 쿠키로 취급됩니다.