안녕하세요. 건브로입니다.
쿠키란 무엇일까요? 쿠키는 브라우저에서 데이터를 저장할 수 있게 하는 기능입니다.
사용자가 처음 로그인 할 때 아이디와 비밀번호를 입력해야 하지만
쿠키가 있으면 그 다음에 로그인 할 때는 로그인 되어 있게 할 수 있어요.
웹 브라우저에는 쿠키 말고도 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 |