아직 해본적은 없지만
http 모듈 혹은 express 등을 사용할 때 cookie를 직접 세팅해서 클라이언트에 전송할 수 있는 것으로 보인다.
그때, 여러 옵션들을 지정할 수 있는데 그것에 대해 정리하였다.
MDN:Set-Cookie
express-session
어떤 것을 사용하느냐에 따라 구체적인 형태는 다르다.
쿠키 옵션에서 도메인은 포트 및 서브 도메인 정보, 세부 경로를 포함하지 않는다. 따라서, example.com
같은 형식으로 기입한다.
만약 쿠키 옵션에서 도메인 정보가 존재한다면 클라이언트에서는 쿠키의 도메인 옵션과 서버의 도메인이 일치해야만 쿠키를 전송할 수 있다.
default: '/'
설정된 Path를 만족하는 모든 경우에 쿠키를 서버로 전송할 수 있다.
즉 Path가
/users
로 설정되어 있고, 요청하는 세부 경로가/users/login
인 경우라면 쿠키 전송이 가능하다.하지만
/user/login
으로 전송되는 요청은 Path 옵션을 만족하지 못하기 때문에 서버로 쿠키를 전송할 수 없다.
MaxAge : 쿠키가 몇 초 동안 유효한지 설정하는 옵션 (밀리세컨드)
Expires : 언제 (Date)까지 유효한지 설정하는 옵션
쿠키를 전송해야 할 때 사용하는 프로토콜에 따른 쿠키전송 여부를 결정한다.
만약 해당 옵션이 true로 설정된 경우, 'HTTPS' 프로토콜을 이용하여 통신하는 경우에만 쿠키를 전송 할 수 있다.
자바스크립트에서 브라우저의 쿠키에 접근 여부를 결정한다. 만약 해당 옵션이 true
로 설정된 경우, 자바스크립트에서는 쿠키에 접근이 불가하다.
명시되지 않는 경우 기본으로 false
로 지정되어 있습니다.
만약 이 옵션이 false인 경우 자바스크립트에서 쿠키에 접근이 가능하므로 'XSS' 공격에 취약합니다.
3가지 옵션이 있다. (cors와 밀접한 관련이 있는 것으로 보인다.)
문서에서는 'safe' HTTP method를 사용할 때 쿠키를 보낸다.
GET
,HEAD
, or `OPTIONS
같이 서버에 어떤 변경을 주지 않는 method 들을 'safe' method라고 한다.
모든 상황에서 쿠키가 전달 됨
같은 site 일때만 쿠키가 전달됨.