카테고리 없음

Node.js cookie

tp134679 2025. 1. 15. 16:37

<목차>

1. HTTP 쿠키(HTTP cookie)란

2. 쿠키 만들어서 사용해보기 

 

 

 

 

 

 

1. HTTP 쿠키(HTTP cookie)란

 

나 자신을 알리는 행위의 자동화를 하기위해 만들어졌습니다.

웹 서버 에 의해 사용자의 클라이언트(브라우저)에 저장되는, '이름을 가진 작은 크기의 데이터'이다. 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 작은 기록 정보 파일을 일컫는다. 쿠키웹 쿠키브라우저 쿠키라고도 한다. 이 기록 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다. 이 수단은 넷스케이프의 프로그램 개발자였던 루 몬틀리가 고안한 뒤로 오늘날 많은 서버 및 웹사이트들이 브라우저의 신속성을 위해 즐겨 쓰고 있습니다.

 

서버의 비 연결성

 

이러한 개인정보를 계속 보내줘야하는 이유는 서버의 비 연결성 떄문인데 

네이버를 예시로들면 네이버 메인 페이지에서 네이버 쇼핑페이지로 넘어가거나 네이버 게임 등으로 넘어갈떄마다 서버는 응답과 요청으로 이요청을 준 클라이언트가 누구지 요청을 해야합니다. 그런데 서버는 비연결성이라 이러한 개인정보 값을 연결을 시켜놓는게 아닌이상 넘어가지 않습니다.  (서버의 신속성을 위해)

 

서버에서의 신속성 

서버에서 여러 클라이언트가 요청과 응답을 처리할경우 서버는 자동적으로 처리가 지연될 수밖에 없습니다. (여러 가지 요청에 대한 처리) 여기서 클라이언트마다 개인값을 일일히 저장해 놓는다면 처리속도는 더욱더 늦춰지고

서버가 처리해야할 일이 더 많아지므로 처리속도가 엄청 늦어지게 됩니다. 특히, 의도적으로 다량의 요청을 보내 서버를 마비시키는 디도스(DDoS, Distributed Denial of Service) 공격 이 이러한 메커니즘을 악의적으로 이용한 예시입니다.

 

이러한 경우 떄문에 신속성이 중요한데 클라이언트 개개인의 정보서버에서 저장하게되면 응답과 요청 처리가 지연되어 신속성이 떨어지기에 서버측에서 쿠키를 저장해주세요 요청(데이터)을 하여 개개인의 클라이언트의 쿠키에 사용자의 기본정보값 을 담아 신속성을 높히기 위하여 만들어졌습니다.

 

ex) 페이지가 넘겨저도 로그인 정보가 저장됨, 유튜브 알고리즘, 광고 등등 사용자마다 각각 다른 원하거나 다른정보가 담김

 

 

 

2. 쿠키 만들어서 사용해보기 

 

쿠키는 서버에서 값을 넘겨주는 형식이라 최초에 클라이언트에서 서버에 접속을 할때 

요청으로 온 요청(req) 정보를 서버에서 응답(res) 정보를 가지고 쿠키를 만들어 주세요. 하고 돌오게 됩니다. 

 

 

네이버 페이지를 예시로 (쿠키사용의 예시지 네이버에서 실제로 이렇게 사용하지 않음) 

네이버 로그인 홈페이지 를 보면 아이디 비밀번호를 클라이언트에서 받아서 네이버 서버에 값을 저장 하고 

서버에서 다시 쿠키값으로 아이디와 비밀번호를 입력해서 쿠키를 만들어주게 됩니다. 

그걸받은 클라이언트는 쿠키 id 값과 pw 값을 저장해서 다른페이지로 넘어가도 알아서 로그인이 되어있게 됩니다.

 

자동으로 로그인 되어있는 홈페이지 즉 쿠키값을 클라이언트에서 저장함

 

 

간단하게 직접만들어 보기

 

express를 사용하여 서버를 열고 createCookie 라는 홈페이지에서 쿠키를 만드려고 했을때

get 을 이용하여 서버 요청 로그인이라면  req값을 받아서 res에 넣어줘야하지만 쿠키를 만들어보기 위함으로 res만 사용

 

setHeader 해더부분에 ('Set-Cookie` (쿠키를 넣겠다) , user_id =blog (user_id 라는 key로 value 는 blog)  localhost 라는 서버 도메인에서만 유효한  path 로컬호스트 이하 모든 경로에서 만 유효한 쿠키를 요청합니다.

해당 서버의 페이지의 req 부분에 set-Cookie 명령어가 들어온후에 

 

해더부분에 Cookie란에 ㅍlog라는 키벨류를 가진 쿠키를 만듬 (토큰은 그전에만든 쿠키)

 

 

이제 도메인이 localhost인 다른 홈페이지에서도 쿠키가 나오는지 확인해보면

다른페이지 임에도 쿠키가 잘 넘어오는것을 확인 할 수 있다!!

 

다만 서버에서 쿠키값을 받아오려면 text 형태인 쿠키값을 변환해줘야한다.

 

해더부분에 저장한 쿠키를 log 해보면

user_id=vlog 라는 텍스트 형태의 값이 날라오게 됩니다.

하지만 vs코드 내에서  key value 로 나누어 값을 가져오기 위해선

{user_id = vlog } 형태의 객체 타입으로 변환시켜야 하기에 

이런식으로 배열로 감싸서 

위 함수의 과정

키 값과 벨류로 분리한 후 

최종적으로

{user_id = vlog } 형태를 만들어 줍니다. 이를 미들웨어로 처리하여 사용이 가능하겠지만 외부모듈에서 cookieParser

라는 기능이 이공정을 대신 수행해주기 때문에  쿠키파서가 어떤기능을 하는지 이해하고 사용할 수 있다.

쿠키파서를 가져와서 use 미들웨어 모든 라우트에 쿠키파서를 사용함.

 

결과적으로 서버에서도 사용이 가능한 객체형태로 값이 변환됨