Cookie
- 서버에서 클라이언트에 데이터를 저장하는 방법의 하나(쿠키,세션,토큰)
- 클라이언트에서 서버로 쿠키를 이용해 데이터를 가져올 수 있음.
- 쿠키를 이요하는 것은 단순히 서버에서 클라이언트에 쿠키를 전송하는 것만 의미하지 않고 클라이언트에서 서버로 쿠키를 전송하는 것도 포함됨.
- 쿠키 옵션
- domain: 쿠키의 도메인 옵션과 서버의 도메인이 일치해야만 쿠키 전송 가능:
- path: 도메인을 제외한 경로
- maxage or expires: 유효기간(예: 24 6 60 * 10000)
- secure: https 프로토콜을 이용하여 통신하는 경우에만 쿠키 전송가능(true/false)
- httpOnly: 자바스크립트에서 쿠키 접근가능 여부, true일때 접근불가 (true/false)
- samesite: cross-origin 요청을 받은 경우 요청에서 사용한 메소드와 해당 옵션의 조합으로 서버의 쿠키 전송 여부를 결정하게 됨.
- Lax: cross-origin 요청이면 'GET'메소드에 대해서만 쿠키 전송 가능
- Strict: 요청이 아닌 경우, same-site인 경우에만
- None: 항상 쿠키를 보내줄 수 있음. 다만 쿠키 옵션중 secure 옵션 필요.
- express 사용시 쿠키 설정
app.use(
session({
secret: '@codestates',
resave: false,
saveUninitialized: true,
cookie: {
domain: 'localhost',
path: '/',
maxAge: 24 * 6 * 60 * 10000,
sameSite: 'none',
httpOnly: true,
secure: true,
},
})
);
- 위의 옵션을 지정한 다음 서버에서 클라이언트로 쿠키를 처음 전송하게 된다면 헤더에 set-cookie라는 프로퍼티에 쿠키를 담아 전송하게 됨. 이후 클라이언트 혹은 서버에서 쿠키를 전송해야 된다면 클라이언트는 헤더에 cookie라는 프로퍼티에 쿠키를 담아 서버에 쿠키를 전송
- express-session을 모듈을 사용한다면 따로 프로퍼티를 지정해 주지 않아도 알아서 프로퍼티로 지정해 주서 보내줌