본문 바로가기
Web

SameSite=none,secure 옵션으로 Cookie 생성하기 (SameSite Cookie 이슈 대응) - java

by 인기쟁이 돌고래 2021. 2. 12.

 javax.servlet.http.Cookie

Cookie 객체에 SameSite 셋팅은 불가능함.

//생성자에 cookieName,value 을 넣어준다
Cookie cookie = new Cookie("cookieName", "value");
//response에 쿠키 set
response.addCookie(cookie);

cookie객제에 setting 가능한 값

 

 

 

 org.springframework.web.util.CookieGenerator

CookieGenerator 에도 SameSite 셋팅은 불가능함 ㅠ

CookieGenerator cookieGenerator = new CookieGenerator();
cookieGenerator.setCookieName("cookieName");
//response에 쿠키 set
cookieGenerator.addCookie(response, "value");

 

 

 

 response에 직접 추가 (구울때 옵션 넣기)

객체에서 셋팅이 불가해서 HttpServletResponse 에 직접 넣어주어야함.

 

* setHeader 로 할시 기존 셋팅 되어있는 쿠키를 지우고 덮어써버리는 것이니 주의 *

//예시 string (속성은 ; 로 구분된다)
String cookieString = "cookieName=value;domain=.tistory.com;max-age=2592000;path=/;SameSite=None;secure;";


//기존에 있던 다른 쿠키들 없어짐 (덮어 써버림)
response.setHeader("Set-Cookie", cookieString);	
//기존에 있던 다른 쿠키 유지 후 추가
response.addHeader("Set-Cookie", cookieString);	

 

 

 

 일단 쿠키 굽고 filter등에서 일괄로 처리가 가능할까?

Collection<String> cookies = response.getHeader("Set-Cookie"); 

를 통해 구운 쿠키를 가져와서 foreach로 다시 구워 넣는게 가능하다.

 

하지만...

1. 의도하지 않은 쿠키까지 영향이 있을지 확인이 필요하고 

2. 서블릿 버전이 안맞거나 하면 response.getHeader가 불가능 한 경우도 있다.

참고 : cherish-it.tistory.com/10

 

명확하게 구울때 넣는게 좋을 것 같다는 의견입니다 :)

댓글