//domain : 현재 쿠키가 어떤 서버로 전송되어져야 하는지 지정하는 속성.
//path : 지정한 곳에서 쿠키를 읽을 수 있음. 디폴트 값은 쿠키를 생성한 곳에서만 사용 가능
public void createSession(Object value, HttpServletResponse response) {
//세션 ID생성후, 값을 세션에 저장
String sessionId = UUID.randomUUID().toString();
sessionStore.put(sessionId, value);
//쿠키 생성
Cookie noMemberCookie = new Cookie(NO_MEMBER_COOKIE, sessionId);
noMemberCookie.setHttpOnly(true);
noMemberCookie.setDomain("localhost");
noMemberCookie.setPath("/Beauty");
// 30초간 저장
cookie.setMaxAge(30*60);
cookie.setSecure(true);
response.addCookie(noMemberCookie);
}
Cookie의 크기는 최대 4kb로 상당히 작다. 데이터 외에 Cookie의 속성(Attribute)로는 아래와 같은 것들이 있다.
- Name: Cookie의 이름
- Value: Cookie의 값
- Secure: secure HTTPS 연결에서만 Cookie가 전송될 것인지의 여부. TRUE면 secure connection이 존재할 때만 Cookie가 보내진다. Default는 FALSE다.
- Domain: Cookie의 domain name이다. 설정한 domain(예를 들면, demo.com)의 모든 subdomain에서 이 Cookie가 이용가능하다. 다만 www.demo.com처럼 설정하면 안된다. 왜냐면 이렇게 설정하면 www.subdmain에서만 접근 가능하기 때문이다.
- Path: 어떤 경로에서 Cookie를 사용가능하게 할지 지정하는 것. 예를 들어 "/"로 설정하면 domain 내의 모든 경로에서 Cookie를 사용할 수 있다. "/test/"로 설정하면 /test/ 와 그 아래 모든 sub directory에서 Cookie를 사용할 수 있다. Default는 Cookie가 만들어지는 경로이다.
- HTTPOnly: TRUE로 설정되면 HTTP 프로토콜을 통해서만 Cookie를 이용할 수 있다.(스크립팅 언어로는 접근이 안된다.) 이 설정은 XSS 공격으로부터 identity가 도둑맞지 않도록 도와준다. Default는 FALSE다.
- Expires: Cookie가 언제 파기될 지 명시한다. 초 단위이며, 606024*30은 30일 뒤에 파기된다는 것을 나타낸다. 이 값이 생략되거나 0으로 설정되면 Session이 끝날 때 파기된다.(브라우저를 끌 때)