node.js로 cookie 다루기
# 본 포스팅은 egoing님의 생활코딩 강의를 듣고 복습한 것을 정리한 내용입니다
const http = require("http");
const cookie = require('cookie');
app = http.createServer(function(request,response){
// 사용자의 HTTP Request에 Cookie가 존재한다면
// Cookie를 객체로 Parsing하여 반환하고 출력한다
if (request.headers.cookie) {
var cookies = cookie.parse(request.headers.cookie);
console.log(cookies);
}
// HTTP Response를 보낼 때
// Set- Cookie 헤더를 설정하는 방법
response.writeHead(200,{
'Set-Cookie' : ['yummy-cookie=choco','tasty-cookie=strawberry']
});
// 해당 Response를 받은 client는
// 쿠키쌍 2개를 받게 된다
// 1. 'yummy-cookie=choco'
// 2. 'tasty-cookie=strawberry'
response.end('Cookie!!');
});
app.listen(3000);
1. 클라이언트로 쿠키 보내기
클라이언트의 HTTP Request로 호출된 미들웨어의 두 번째 인자 response객체를 이용하여
HTTP Response Header를 조작할 수 있습니다.
조작 방법은 위 코드와 같습니다.
2. 클라이언트로부터 받은 쿠키 처리
웹 서버가 클라이언트의 HTTP Request를 받으면
쿠키값은
호출되는 미들웨어의 첫 번째 인자인 request.headers.cookie에 저장되어 나옵니다.
사용하기 힘든 문자열 형태이므로
이것을 이용하기 편한 객체로 변환(Parsing)하기 위하여
cookie 모듈의 cookie.parse함수를 이용했습니다.
3. 확인해보기
Set-Cookie헤더를 통하여 실제 클라이언트에 쿠키가 저장되는지
Chrome 개발자 도구를 이용하여 확인해 봅시다.
F12를 눌러 Network탭의 Headers란을 클릭해 보면
서버가 클라이언트로 보내는 HTTP Response의 헤더에
Set-Cookie란이 세팅되어 있습니다.
이번엔 클라이언트에서 서버로 보내는 HTTP Request를 확인해 봅시다.
위의 HTTP Response를 수신하고 나서 새로고침을 합니다.
그리고 다시 위처럼 들어가서 HTTP Request Header를 확인해 보면
쿠키가 잘 전송되는 것을 확인할 수 있습니다.
쿠키를 서버로부터 부여받은 뒤부터
클라이언트는 서버로 요청을 보낼때마다 위 쿠키를 함께 전송하게 됩니다.
또한
Network탭을 클릭하여 cookie란을 들어가보면
이번 요청을 통해 서버로 전송된 쿠키와
이번 응답을 통해 서버로부터 부여받은 쿠키를 볼 수 있습니다.
그리고 application탭에 가서
Cookies란을 보면
특정 웹 서버로 HTTP Request를 보낼 때
어떠한 쿠키가 같이 전송되는지를 확인할 수 있습니다.
'Back-End > node.js' 카테고리의 다른 글
[[node.js]] Session Cookie와 Permanent Cookie (0) | 2022.03.09 |
---|---|
Express app 구현 시 주의해야 할 보안 관련 이슈 (0) | 2022.03.04 |
Express module의 error handling (0) | 2022.03.02 |
Express 모듈에서 static file의 서비스 (0) | 2022.03.01 |
Node.js Middleware의 개념 및 실행 순서 (0) | 2022.03.01 |