일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 김양재
- WebGL
- 김양재 목사
- No SQL
- 빅 데이터
- probability
- 인공지능
- 주일설교
- 김양재 목사님
- node.js
- MongoDB
- c++
- 확률
- 통계
- openCV
- nodeJS
- 빅데이타
- 빅데이터
- 데이터 과학
- Artificial Intelligence
- 딥러닝
- data science
- 우리들교회
- Statistics
- Deep learning
- Machine Learning
- 빅 데이타
- 몽고디비
- Big Data
- R
- Today
- Total
Scientific Computing & Data Science
[WebApp / Express] Cookie를 사용하여 데이터 저장하기 본문
이번 글에서는 Express Framework에서 cookie를 사용하여 데이터를 저장하고 읽어오는 방법에 대하여 알아보도록 하겠습니다.
Cookie란 웹사이트가 사용자의 브라우저에 저장할 수 있는 작은 조각의 정보를 의미합니다. Express에서는 cookie-parser라는 middleware를 통해 cookie API를 제공합니다. Cookie 기능을 활성화하기 위해 다음 명령을 입력하여 cookie-parser를 로딩합니다:
1 | var bodyParser = require('body-parser'); | cs |
Express에서 cookie-parser를 활성화합니다:
1 | app.use(cookieParser()); | cs |
이제 Express에서 cookie를 활용할 수 있는 모든 준비가 완료되었습니다. req.cookies 오브젝트에서 브라우저에 저장된 cookie 값을 불러올 수 있으며, res.cookies() 메써드를 통해 cookie 값을 저장할 수 있다.
cookie 생성하기
다음은 웹사이트에 방문자를 카운팅하는 간단한 예제입니다. 만약 cookie가 존재하지 않는 경우 cookie를 생성하고 이미 존재하는 경우 값을 1만큼 증가시킵니다:
1 2 3 4 5 6 7 8 9 10 11 | app.get('/visotors', function(req, res) { var visitors = req.cookies.visitors || 0; visitors++; res.cookie('visitors', visitors, { maxAge: 10000 }); res.send('visitors: ' + visitors); }); | cs |
웹브라우저의 개발도구에서 cookie에 저장된 값을 확인할 수 있습니다:
res.cookie() 메써드는 cookie 옵션을 설정할 수 있으며 주요 옵션은 다음과 같습니다:
옵 션 |
설 명 |
maxAge |
현재 시간으로부터 만료 시간을 밀리초(millisecond) 단위로 설정합니다. |
expires |
Cookie의 만료 날짜를 GMT 시간으로 설정합니다. 지정되어 있지 않거나 0으로 지정되어 있는 경우 session cookie를 생성합니다. |
path |
Cookie의 경로. 기본 경로는 "/"입니다. |
domain |
Cookie의 domain name입니다. 기본 domain name은 loaded입니다. |
secure | HTTPS에서만 cookie를 사용할 수 있도록 합니다. |
httpOnly | 웹 서버를 통해서만 cookie에 접근할 수 있도록 합니다. |
signed | cookie가 서명되어야 할 지를 결정합니다. |
위와 같은 옵션을 설정하는 방법은 다음과 같습니다:
1 2 3 | res.cookie('visitors', visitors, { maxAge: 10000 }); | cs |
cookie 읽기
cookie는 req.cookie.{object_name}에 저장됩니다. 다음 코드는 현재 저장된 cookie 오브젝트의 값을 읽어오는 것입니다:
1 2 3 4 | app.get('/currentcounter', function(req, res) { var visitors = req.cookies.visitors; res.send('Visitors: ' + visitors); }); | cs |
cookie 업데이트
다음 코드는 해당 cookie 값을 업데이트하는 것입니다:
1 2 3 4 5 6 | app.get('/updatevisitors', function(req, res) { var new_value = 38; res.cookie('visitors', new_value); res.send('Visitors updated.'); }); | cs |
visitors 값을 38로 지정하였으며, 개발 도구에서 값을 확인할 수 있습니다:
Signed cookies
서명된 cookie(signed cookie)는 값에 서명이 첨부된 cookie입니다. 서명은 특정 문자열에 의해 생성되며, 다음과 같이 cookie-parse middleware에 의해 지정합니다:
1 | app.use(cookieParser('GCHOI')); | cs |
서명된 cookie를 사용하려면 다음과 같이 res.cookie() 메써드에 signed 값을 'true'로 지정합니다:
1 2 3 4 5 6 7 8 9 10 11 12 | app.get('/visitors', function(req, res) { var visitors = req.cookies.visitors || 0; visitors++; res.cookie('visitors', visitors, { signed: true, maxAge: 10000 }); res.send('Visitors: ' + visitors); }); | cs |
웹 브라우저의 주소창에 http://localhost:3000/visitors를 입력하고 브라우저의 개발 도구의 resource를 살펴보면 다음과 같이 값(Value)이 서명된 값을 확인할 수 있습니다:
cookie 삭제하기
cookie 삭제는 cookie를 생성할 때의 옵션에 따라 다르며, 이를 정리하면 다음과 같습니다:
생 성 |
삭 제 |
res.cookie('visitors', 100); |
res.clearCookie('visitors'); |
res.cookie('visitors', 100, {path: '/visitors'}) |
res.clearCookie('visitors', {path: '/visitors'}) |
res.cookie('visitors', 100, {sign : true}); |
res.clearCookie('visitors') |
이로써 cookie를 이용하여 웹 브라우저에 데이터를 저장하고 불러오고 삭제하는 방법에 대하여 알아보았습니다.
'Programming > Web App' 카테고리의 다른 글
[WebApp / Node Webkit] Example 2 - Context Menu (0) | 2016.01.23 |
---|---|
[WebApp / Node Webkit] Example 1 - HelloWorld (0) | 2016.01.20 |
[WebApp / Express] 간단한 MongoDB Middleware 만들기 (0) | 2015.12.19 |
[Web App / Express] Express에서 서버 열기 (0) | 2015.12.13 |
[WebApp / CreateJS] 간단한 오브젝트 생성 + 터치 무브 + 사운드 재생 (0) | 2015.12.09 |