만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/기억노트

[HTTP] cookie 도메인 앞에 "." 이 포함되는 이유?

D36choi 2021. 8. 12. 14:03
728x90

HTTP Cookie

스프링 서버에서 요청에 대해 쿠키를 생성했더니

    public void setCookie(HttpServletRequest request, HttpServletResponse response, String recommendationCode, int hour) {

        CookieManager cookieManager = new CookieManager(request, response);
        cookieManager.setMaxAge(hour * HOUR);
        cookieManager.setDomain(DOMAIN);
        cookieManager.setCookie(COOKIE_NAME, COOKIE_VALUE);
    }

웹 어플리케이션 서버를 개발하면서 위와 같이 쿠키를 생성해줘야 했었다.

그런데 final String DOMAIN = "example.com"; 으로 하면 실제 쿠키의 domain은 .example.com 으로, 맨 앞에 점이 붙어 있었다.

그러면 내 쿠키는 example.com 에서는 유효하지 않게 되는걸까?

쿠키는 정해진 도메인 영역에서만 유효할 수 있다. example.com 을 도메인으로 가지는 쿠키는 naver.com 에서는 사용할 수 없다.

결론부터 말하자면

.example.com 쿠키도 example.com 에서 유효하다.
앞에 점이 붙는 이유는 subdomain 때문이다.

The dot means that the cookie also holds for any subdomain to mydomain.com, such as example.mydomain.com. Think of it as *.mydomain.com where * is a wildcard.

.example.com 의 의미는 "example.com의 모든 하위 도메인도 포함시킬거야" 라는 의미다. 즉, m.example.com 이든 my.example.com 이든 전부 쿠키에게 유효하게 만든다는 것이다. *.example.com 과 같다.

따라서 앞에 점이 붙는다고 내 도메인에서 동작안하지 않을까라는 고민은 안해도 될 것 같다.

https://stackoverflow.com/questions/20570438/cookie-domain-contains-dot