728x90
HTTP 쿠키는 서버가 브라우저에 전달하는 데이터이다.
브라우저는 해당 데이터를 저장해 두었다가
동일한 서버에 접속시 저장된 데이터를 함께 전송한다.
쿠키는 주로 3가지 목적을 위해 사용된다.
세션관리
로그인, 장바구니 정보 등
개인화
구글 테마, 언어 모드 등의 세팅
트래킹
맞춤형 광고 등 사용자의 행동을 기록하고 분석
쿠키 만들기
쿠키는 헤더안에 포함되어 브라우저에 전송된다.
만료일 또는 시간 명시가 가능하고,
만료된 쿠키는 더이상 보내지 않을수 있다.
또한 특정 경로의 제한 설정이 가능하다.
서버측 쿠키 전송 [NodeJS]
const http = require('http');
http.createServer((req,res)=>{
res.writeHead(200,{
//'Set-Cookie' : '[Cookie이름]=[Cookie값]'
'Set-Cookie' : 'tistory=goodmemory'
});
res.end('Hello world');
}).listen(3000,()=>console.log(`http://localhost:3000`));
NodeJs 코드로 작성하였으며,
response.writeHead()를 통하여
쿠키값을 객체형태 내에 넣은 것을 볼수 있다.
클라이언트가 해당 서버에 접속시에
해당 쿠키값을 아래와 같이 확인 가능하다.
[크롬 브라우저 개발자 모드 > 네트워크 탭 > response Headers > Set-Cookie]
쿠키의 만료
쿠키의 만료에는 두가지 방법이 있다.
1, 아무것도 명시하지 않았을 때 (=세션쿠키)
브라우저 종료시 쿠키 만료
2. Expires / Max-Age 속성을 통해 만료를 명시하였을때
명시된 기간 이후에 쿠키 만료
Expires 속성을 통해 쿠키 만료 명시
const http = require('http');
http.createServer((req,res)=>{
res.writeHead(200,{
//path는 url 주소
//expires 화요일, 3월19일, 2022년 9시 33분 9초에 만료
'Set-Cookie' : `tistory=goodmemory;
path=/;
expires=Tue, 19 Mar 2022 09:33:09 GMT"`,
});
res.end('Hello world');
}).listen(3000,()=>console.log(`http://localhost:3000`));
Max-Age 속성을 통해 쿠키 만료 명시
const http = require('http');
http.createServer((req,res)=>{
res.writeHead(200,{
//Max-age에는 초단위 값을 입력해야하기 때문에
//60*60 = 60분
//60*60*24 = 하루
//60*60*24*30 = 한달 뒤 만료
'Set-Cookie' : `tistory=goodmemory;
path=/;
Max-age=${60*60*24*30}`,
});
res.end('Hello world');
}).listen(3000,()=>console.log(`http://localhost:3000`));
쿠키 보안
1. Secure 속성
HTTPS 프로토콜 상에서만 쿠키 동작
const http = require('http');
http.createServer((req,res)=>{
res.writeHead(200,{
//'Set-Cookie' : '[Cookie이름]=[Cookie값]; Secure'
'Set-Cookie' : 'tistory=goodmemory; Secure'
});
res.end('Hello world');
}).listen(3000,()=>console.log(`http://localhost:3000`));
2. HttpOnly 속성
자바스크립트 Document.cookie를 통해
쿠키 값의 접근을 막는 속성
const http = require('http');
http.createServer((req,res)=>{
res.writeHead(200,{
//'Set-Cookie' : '[Cookie이름]=[Cookie값]; HttpOnly'
'Set-Cookie' : 'tistory=goodmemory; HttpOnly'
});
res.end('Hello world');
}).listen(3000,()=>console.log(`http://localhost:3000`));
728x90
'백엔드 > NodeJs' 카테고리의 다른 글
[NodeJs] Express 미들웨어 (middleware) (0) | 2021.03.25 |
---|---|
[NodeJs] 미들웨어 body-parser 설치 없이 get, post 데이터 손쉽게 다루기 (0) | 2021.03.25 |
[Express] NodeJs Route 라우팅 (0) | 2021.03.24 |
[NodeJs] 애플 홈페이지 프론트엔드+백엔드 (풀스택) 샘플코드 (0) | 2021.03.22 |
[NodeJS] NodeJs 와 npm 설치 하기 (0) | 2021.03.06 |
댓글