NodeJs
NodeJs, 네트워크 - 쿠키(Cookie)
char1ey
2022. 12. 25. 18:01
목차 |
1. 쿠키(Cookie) |
2. 쿠키의 저장형태 |
3. Set-Cookie |
4. 쿠키의 삭제 |
1. 쿠키(Cookie)
HTTP 요청메시지 헤더 안에 클라이언트가 저장값(쿠키)을 넣어보낸다.
헤더에 항상 쿠키가 들어가도록 되는것이 아닌, 선택사항이다.
개발자 도구를 열어 쿠키를 확인할 수 있다.
2. 쿠키의 형태
쿠키는 이름과 값이 쌍을 이뤄 저장된다.
쿠키는 세미콜론( ; )으로 구분된다.
<cookie-name>=<cookie-value>;
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
쿠키 하나에 속성들을 지정하는 것이라 생각하면된다.
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로 정한 시간에 사라진다.