NodeJs

NodeJs, 네트워크 - 쿠키(Cookie)

char1ey 2022. 12. 25. 18:01
목차
1. 쿠키(Cookie)
2. 쿠키의 저장형태
3. Set-Cookie
4. 쿠키의 삭제

 

 

 

1. 쿠키(Cookie)

 

HTTP 요청메시지 헤더 안에 클라이언트가 저장값(쿠키)을 넣어보낸다.

 

헤더에 항상 쿠키가 들어가도록 되는것이 아닌, 선택사항이다.

 

<그림 1>

 

 

개발자 도구를 열어 쿠키를 확인할 수 있다.

 

 

<그림 2>

 


2. 쿠키의 형태

 

쿠키는 이름과 값이 쌍을 이뤄 저장된다.

 

쿠키는 세미콜론( ; )으로 구분된다.

 

<cookie-name>=<cookie-value>; 

 

<그림 3> 요청 메시지 헤더의 쿠키

 


3. 쿠키의 생성과 Set-Cookie

 

쿠키의 생성

 

서버가 응답메시지를 줄 때에 브라우저에게 만들어 달라고 메시지 안에 넣어주어야한다.

 

아래 코드중 가운데 res.setHeader를 통해서 쿠키를 넣어 줄 수 있다.

 

setHeader( 키, 값 )는 응답 메시지의 헤더 부분에 키와 값을 넣어주는 역할을 한다. 

 

이 때, Set-Cookie를 통해서 넣어주어야 한다.

 

const express = require('express')

const server = express()


server.get('/', (req, res) => {
    res.setHeader('Set-Cookie', 'name=value'; Domain=127.0.0.1; Path=/;
}

server.listen(3000, () => {
    console.log('server start')
}

 

 

Set-Cookie

 

Set-Cookie는 사용자(브라우저)가 서버로 쿠키를 다시 보낼 수 있도록, 서버에서 사용자에게 쿠키를 보내는 데 사용된다.4

 

쿠키 하나에 속성들을 지정하는 것이라 생각하면된다.

 

<그림 4> Set-Cookie

 

Set-Cookie에 넣을 수 있는 것들이 정해져 있다. 아래의 내용은 MDN 사이트에 보다 자세히 나와있다.

 

# 쿠키의 이름과 값을 정의한다.
Set-Cookie
: <cookie-name>=<cookie-value>;

# 쿠키의 최대 수명을 HTTP 날짜 타임스탬프로 나타낸다.
Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>;

# 쿠키가 만료될 떄까지의 시간(초)을 나타낸다. Expires보다 우선순위에 있다.
Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<number>;

# 쿠키를 보낼 호스트를 정의한다.
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<damain-value>;

# 브라우저가 헤더를 보내기 위해 요청된 URL에 있어야하는 경로를 나타낸다.
Set-Cookie: <cookie-name>=<cookie-value>; Path=<path-value>;

# 스키마로 요청이 있을 때만 쿠키가 전송되어 보안측면에서 좋다.
Set-Cookie: <cookie-name>=<cookie-value>; Secure;

# Document.cookie()와 같은 Javascript 등에서 쿠키에 대한 접근을 막는다.
Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly;

 

 


4. 쿠키의 삭제

쿠키는 삭제 시점, 방식에 따라 종류가 나뉜다.

 

세션 쿠키

 

클라이언트 종료시 세션쿠키가 제거된다. Expires나 Max-Age를 지정하지 않았을 경우에는 세션 쿠키로 지정된다.

 

지속 쿠키

클라이언트가 닫힐 떄 사라지는 것이 아니라 Expires로 정한 날짜, Max-Age로 정한 시간에 사라진다.