쿠키와 세션에 대한 자세한 정보는 이 포스트를 참조해주세요.
위의 포스트에서 쿠키와 세션을 정리해두었습니다. 그래도 짧게 설명하고 넘어가겠습니다.
쿠키
는 웹 페이지 방문 시 생기는 정보들을 담아서 브라우저 자체에 저장되는 임시 저장 파일입니다. 즉, 클라이언트측에 저장되는 사용자 정보입니다.
세션
은 클라이언트의 연결을 확인하고 연결된 시간동안 클라이언트의 정보와 설정 등을 유지하는 것 입니다. 세션은 서버에 저장되는 사용자 정보입니다.
노드를 이용해서 서버에서 쿠키
를 만들고 보내보겠습니다.
const http = require('http');
http.createServer((req, res) => {
console.log(req.headers.cookie);
res.writeHead(200, {'Set-Cookie': 'firstCookie=Hello Cookie!'});
res.end();
}).listen(8080);
우선 서버를 만들고 쿠키를 요청했습니다. 쿠키
는 요청과 응답의 헤더에 담겨져서 보내기 때문에 요청객체의 헤더에서 불러와서 console.log를 찍었습니다.
console.log(req.headers.cookie);
이제 우리는 서버측에서 응답에 쿠키를 담아야합니다. 그래서 writeHead
에 쿠키를 담습니다. 쿠키 여러개를 만들고 싶다면 쿠키 사이에 세미콜론;
을 넣어서 구분합니다. 이 응답을 받은 브라우저는 firstCookie=Hello Cookie!
라는 쿠키를 담게 됩니다. 확인해볼까요?
res.writeHead(200, {'Set-Cookie': 'firstCookie=Hello Cookie!'});
콘솔에는 쿠키 내용이 잘찍혔고요. 이것을 실제 브라우저의 개발자도구에서 확인이 가능합니다.브라우저에서 쿠키는 개발자도구 -> 애플리케이션 -> 저장용량의 쿠키 탭에가면 볼 수 있습니다.
쿠키는 브라우저에 저장되는 정보이기 때문에 보안상으로 좋지도 못하고, 개발자도구에서 조작이 가능합니다. 그렇기에 서버에 데이터를 저장하고 사용자 인증을 받아서 정보를 주고받는 세션
을 이용하게 됩니다. 하지만 세션도 그냥 구현하면 클라이언트에 정보가 공개 되므로, 세션 쿠키라는 것을 만들어서 서버와 통신하게 됩니다.
쿠키와 세션, 세션 쿠키에 대한 설명은 맨 위 포스트에 따로 설명했습니다.
직접 세션을 구현하면 여러 보안상의 문제점이 있기 때문에 안정적인 모듈을 불러와서 쓰게되는데, 세션 모듈이용방법은 추후에 다시 다루도록 하겠습니다.