관심있는 언어들/Node.js

[Node.js] 쿠키

건브로 2021. 2. 14. 17:01

안녕하세요. 건브로입니다.

쿠키란 무엇일까요? 쿠키는 브라우저에서 데이터를 저장할 수 있게 하는 기능입니다.

사용자가 처음 로그인 할 때 아이디와 비밀번호를 입력해야 하지만

쿠키가 있으면 그 다음에 로그인 할 때는 로그인 되어 있게 할 수 있어요.

웹 브라우저에는 쿠키 말고도 Local Storage, IndexedDB 등

웹 브라우저에서 데이터를 저장할 수 있는 것들이 있고, 용량도 쿠키보다 큽니다.

 

오늘은 쿠키에 대해서 알아봅시다.

 


1. 쿠키 세팅하기

//cookie.js
var http = require('http');
var cookie = require('cookie');

http.createServer((request, response)=>{
	var cookies = {};
    if(request.headers.cookie !== undefiend){
    	cookies = cookie.parse(request.headers.cookie);
    }
    console.log(cookies);
    response.writeHead(200, {
    	"Set-Cookie":[
        	"delicious_cookie=choco"
        ]
    })
    response.end("Cookie!!");
}).listen(3000);

//console result: {delicious_cookie: 'choco'}

 

cookie.js를 보면 response.writeHead()를 사용해서

현재의 서버상태와 쿠키 값을 설정한다. 화면으로는 "Cookie!!"가 나오고,

콘솔 값으로는 객체 형식으로 delicious_cookie: 'choco'가 나온다.

 

생각보다 쿠키를 설정하는 것은 어렵지는 않다.

이렇게 기본 설정이 가능하며, 여러가지 옵션을 줄 수 있다.

 

1) 기간

기간 설정은 아래와 같이 표현할 수 있다.

아래의 예시는 31일 동안 쿠키를 유지 할 수 있는 것이다.

그리고 Expires를 사용하면 Max-Age와는 다르게 시간이 아닌 날짜로 값을 넣어야한다.

즉, Max-Age는 언제까지 사는 것인가 이고, Expires는 언제 죽는 가 인 것이다.

response.writeHead(200, {
	"Set-Cookie":[
    	`delicious_cookie=choco; Max-Age=${60*60*24*31}`
        'good_cookie=none; Expires=Wed, 30 Aug 2021 00:00:00 GMT'
    ]
});

 

 

2) 보안

Secure은 https에서만 쿠키를 웹 브라우저에서 웹 서버로 요청 할 수 있다.

HttpOnly는 자바스크립트로 cookie를 접근하지 못하도록 해준다.

콘솔 창에 document.cookie를 입력하면 쿠키의 내용이 나오는데, 옵션으로 해놓으면 쿠키의 내용이 

자바스크립트 상에서 안 보이게 된다. 즉 자바스크립트로 쿠키를 가로챌 수 없다는 것이다!

response.writeHead(200, {
	"Set-Cookie": [
    	"delicious_cookie=choco; Secure"
        "good_cookie=none; HttpOnly"
    ]
});

3) Path와 Domain

Path는 해당 path에서만 쿠키를 요청할 수 있게 한다.

Domain은 해당 도메인에서만 쿠키를 요청할 수 있게 한다.

response.writeHead(200, {
	"Set-Cookie": [
    	"delicious_cookie=choco; Path=/",
        "good_cookie=none; Domain=example.com"
    ]
})

 

출처: 생활코딩 Node.js - 쿠키와 인증
https://www.opentutorials.org/course/3387

 

 

Node.js - 쿠키와 인증 - 생활코딩

수업소개 이 수업은 웹서버의 정보를 웹브라우저에 저장해서 개인화, 인증, 사용자 추적 등의 기능을 구현할 수 있도록 해주는 쿠키(cookie)를 알려드리는 수업입니다. 또 인증 기능을 구현하는

www.opentutorials.org

 

 

'관심있는 언어들 > Node.js' 카테고리의 다른 글

[Node.js] REPL 사용 및 모듈 만들기  (0) 2021.07.27
[Node.js] 이벤트 루프  (0) 2021.07.22
[Node.js] 초보자의 JWT 정리  (2) 2021.02.26