본문 바로가기

Backend

Cookie

Cookie는 Http Response에 담겨 Client에게 전달되고 저장된다. 이 때 어떤 브라우저를 쓰는지에 따라 Cookie의 관리 방식은 달라질 수 있다. 이 글은 Chrom browser 기준으로 작성할 예정이다. 

ResponseCookie responseCookie = ResponseCookie.from("Authorization", tokens.get(1))
                .httpOnly(true)
                .secure(true)
                .sameSite("None")
                .maxAge(60 * 60 * 24 * 500)
                .path("/")
                .build();

우선 쿠키의 유효기간을 500일로 설정했을 경우이다. 

 

2025-05-05T15:34:06.142Z - Browser에 저장되는 쿠키

위와 같이 강제로 400일로 변환되는 것을 볼 수 있다. 크롬 브라우저의 경우 보안 상의 이유로 인해 쿠키의 유효기간을 최대 400일까지 설정이 가능하도록 설정해두었다고 한다. 

 

여담으로 쿠키를 설정할 때 초단위가 아닌 밀리세컨 단위로 착각하여 시간을 설정하였는데 무려 20년 가까이 설정되어 아예 쿠키가 저장되지 않는 문제점이 생겼었다. 과거에 있었던 밀레니엄 버그처럼 2038년 1월 19일이면 32비트 정수형 범위의 최댓값을 넘어가면서 오버플로가 발생하기 때문에 이는 Cookie를 받을 수 있지만 Chrome에서 인식하지 못하는 버그로 이어지는 듯 하다.