Nodejs cookie

이은룡·2022년 4월 22일
0

WEB2

목록 보기
6/10

세션 관리(Session management)
서버에 저장해야 할 로그인, 장바구니, 게임 스코어 등의 정보 관리
개인화(Personalization)
사용자 선호, 테마 등의 세팅
트래킹(Tracking)
사용자 행동을 기록하고 분석하는 용도
과거엔 클라이언트 측에 정보를 저장할 때 쿠키를 주로 사용하곤 했습니다. 쿠키를 사용하는 게 데이터를 클라이언트 측에 저장할 수 있는 유일한 방법이었을 때는 이 방법이 타당했지만, 지금은modern storage APIs를 사용해 정보를 저장하는 걸 권장합니다. 모든 요청마다 쿠키가 함께 전송되기 때문에, (특히 mobile data connections에서) 성능이 떨어지는 원인이 될 수 있습니다. 정보를 클라이언트 측에 저장하려면 Modern APIs의 종류인 웹 스토리지 API (localStorage와 sessionStorage) 와 IndexedDB를 사용하면 됩니다.

쿠키 생성

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry

[page content]
http.createServer(function(request, response){
     response.writeHead(200, {
         'Set-Cookie':['yummy_cookie=choco','tasty_cookie=strawberry']
     });
    response.end('cookie!!');
}).listen(3000);

쿠키 읽기

cookie npm 사용

var http = require('http');
var cookie = require('cookie');
http.createServer(function(request, response){
    var cookies = {};
    if(request.headers.cookie !== undefined){
     cookies = cookie.parse(request.headers.cookie);
    }
    response.writeHead(200, {
        'Set-Cookie':['yummy_cookie=choco', 'tasty_cookie=strawberry']
    });
    response.end('cookie!!');
}).listen(3000);

쿠키 활용

쿠키의 벨류값으로 로그인,번역 등 여러가지 활용가능

Session cookie: 웹브라우저를 끄면 사라지는 휘발성 쿠키
Permanent cookie: 웹브라우저를 꺼도 사라지지 않는 쿠키

var http = require('http');
var cookie = require('cookie');
http.createServer(function(request, response){
    var cookies = {};
    if(request.headers.cookie !== undefined){
     cookies = cookie.parse(request.headers.cookie);
    }
    response.writeHead(200, {
        'Set-Cookie':[
            'yummy_cookie=choco', 
            'tasty_cookie=strawberry', 
            `Permanent=cookies; Max-Age=${60*60*24*30}`]
    });
    response.end('cookie!!');
}).listen(3000);

쿠키 옵션

Secure: 웹브라우저와 웹서버가 https로 통신하는 경우만 웹브라우저가 쿠키를 서버로 전송하는 옵션
HttpOnly: 자바스크립트의 document.cookie를 이용해서 쿠키에 접속하는 것을 막는 옵션

http.createServer(function(request, response){
    var cookies = {};
    if(request.headers.cookie !== undefined){
     cookies = cookie.parse(request.headers.cookie);
    }
    response.writeHead(200, {
        'Set-Cookie':[
            'yummy_cookie=choco', 
            'tasty_cookie=strawberry', 
            `Permanent=cookies; Max-Age=${60*60*24*30}`,
            'Secure=Secure; Secure',
            'HttpOnly=HttpOnly; HttpOnly'
        ]
    });
    response.end('cookie!!');
}).listen(3000);

path
domain

	'Path=Path; Path=/cookie',
    'Domain=Domain; Domain=test.o2.org'

0개의 댓글