[TIL] 07/19 항해99 72일차 - 트러블 슈팅 : 배포 후, cookie가 삭제되지 않는 문제

2022. 7. 28. 02:39· Study/TIL
목차
  1. 배포 후, cookie가 삭제되지 않는 문제
  2. 첫번째 시도 - 새로운 쿠키 객체를 생성해서 설정값을 바꾼 후 response에 넣어주기
  3. 두번째 시도 - 삭제할 쿠키 옵션에 domain과 path도 넣어준다.

 

들어가며

지난 번 삽질로그에서 배포 후 cookie를 넘겨주는 문제를 해결했었다.

그런데 이번에는 그렇게 넘겨준 cookie가 삭제되지 않는 문제가 발생했다. 

 

소셜 로그인 시 redirect_uri 등등 잠시 사용할 목적의 쿠키를 저장해두었다가 로그인 완료 후 token 발급 시에 해당 쿠키를 삭제하는 방식으로 구현이 되어있어 최종적으로 refresh_token만 쿠키 안에 담겨있어야하는데 필요없는 쿠키들이 삭제되고있지 않았다.

 

 

오늘의 TIL은 이 문제에 대한 트러블 슈팅을 해보고자 한다.  


배포 후, cookie가 삭제되지 않는 문제

 

기존의 cookie 삭제 로직은 다음과 같다

public static void deleteCookie(HttpServletRequest request, HttpServletResponse response, String name) {
      Cookie[] cookies = request.getCookies();

      if (cookies != null && cookies.length > 0) {
          for (Cookie cookie : cookies) {
              if (name.equals(cookie.getName())) {
                  cookie.setValue("");
                  cookie.setPath("/");
                  cookie.setMaxAge(0);

                  response.addHeader("Set-Cookie", deleteCookie.toString());
              }
          }
      }
  }

 

 

첫번째 시도 - 새로운 쿠키 객체를 생성해서 설정값을 바꾼 후 response에 넣어주기

 

기존 코드는 getCookies() 메소드로 가져온 객체의 설정값을 수정한 다음 response header에 넣어주는 방식이다.

 

 

구글링을 해본 결과 쿠키 삭제는 다음과 같이 하면 된다고 똑같이 말하기에 코드를 수정해보았다.

Cookie myCookie = new Cookie("기존 쿠키 이름", null);
    myCookie.setMaxAge(0);
    myCookie.setPath("/");
    response.addCookie(myCookie);

 

 

수정한 로직

public static void deleteCookie(HttpServletRequest request, HttpServletResponse response, String name) {
      Cookie[] cookies = request.getCookies();

      if (cookies != null && cookies.length > 0) {
          for (Cookie cookie : cookies) {
              if (name.equals(cookie.getName())) {
									Cookie deleteCookie = new Cookie(name, null);
                  deleteCookie.setValue("");
                  deleteCookie.setPath("/");
                  deleteCookie.setMaxAge(0);

                  response.addCookie(deleteCookie);
              }
          }
      }
  }

 

 

결과는 여전히 실패이다.

 

다시 구글링을 해보자

 

 

 

두번째 시도 - 삭제할 쿠키 옵션에 domain과 path도 넣어준다.

배포 후 쿠키가 넘어가지 않는 문제를 해결하기 위해 서브 도메인을 사용하고, 쿠키 설정에도 domain 값을 넣어줬었는데, 알고보니 쿠키를 삭제할 때에도 domain 값을 넣어줘야 한다고 한다.

 

그래서 다음과 같이 cookie 삭제 설정에 domain값을 추가해주었다. 

 

public static void deleteCookie(HttpServletRequestrequest,HttpServletResponseresponse,Stringname) {
Cookie[] cookies =request.getCookies();

        if (cookies != null && cookies.length > 0) {
            for (Cookiecookie : cookies) {
                if (name.equals(cookie.getName())) {
                    ResponseCookiedeleteCookie = ResponseCookie.from(name, "")
                            .domain("bae-chelin.com")
                            .path("/")
                            .httpOnly(true)
                            .maxAge(0)
                            .build();

                    response.addHeader("Set-Cookie", deleteCookie.toString());
                }
            }
        }
    }

 

 

 

최종적으로 성공!


마치며

자꾸 쿠키를 다루다 보니까 어떤 글들은 쿠키를 생성한다고 하는 대신 쿠키를 굽는다라고 표현하고 있었다. 되게 귀여운 표현인거 같아서 앞으로 나도 쿠키를 생성하는게 아니라 구워보기로 했다.

 

저작자표시 비영리 (새창열림)

'Study > TIL' 카테고리의 다른 글

[회고록] 08/04 항해99 88일차 - 실전프로젝트 "배슐랭" 회고  (0) 2022.08.07
[TIL] 07/25 항해99 78일차 - MySQL 검색기능 : FullText Search  (0) 2022.07.28
[TIL] 07/15 항해99 68일차 - 트러블 슈팅 : JWT 401에러 보내기  (0) 2022.07.26
[TIL] 07/10 항해99 63일차 - postman에서 cookie 사용하기  (1) 2022.07.25
[TIL] 07/07 항해99 60일차 - 트러블 슈팅 : 카카오 로그인에서 이메일이 넘어오지 않는 문제  (0) 2022.07.25
  1. 배포 후, cookie가 삭제되지 않는 문제
  2. 첫번째 시도 - 새로운 쿠키 객체를 생성해서 설정값을 바꾼 후 response에 넣어주기
  3. 두번째 시도 - 삭제할 쿠키 옵션에 domain과 path도 넣어준다.
'Study/TIL' 카테고리의 다른 글
  • [회고록] 08/04 항해99 88일차 - 실전프로젝트 "배슐랭" 회고
  • [TIL] 07/25 항해99 78일차 - MySQL 검색기능 : FullText Search
  • [TIL] 07/15 항해99 68일차 - 트러블 슈팅 : JWT 401에러 보내기
  • [TIL] 07/10 항해99 63일차 - postman에서 cookie 사용하기
Anna-Jin
Anna-Jin
Anna-Jin
내일 한걸음 더
Anna-Jin
TOTAL
TODAY
YDAY
  • CATEGORY (212)
    • Project (0)
      • Zero2One.Dev (0)
    • Algorithm (40)
      • Leetcode (20)
      • Programmers (1)
      • CODETREE (0)
      • Baekjoon (7)
      • etc (12)
    • JAVA (42)
      • JAVA (20)
      • 점프투자바 (16)
      • 이것이 자바다 (6)
    • Spring boot (20)
    • Database (9)
    • CS (11)
    • Study (80)
      • Trouble Shooting (11)
      • TIL (50)
      • WIL (11)
      • Etc (8)
    • Review (10)
    • Projects (0)
      • Blog (0)

BLOG MENU

  • GITHUB
  • RESUME

공지사항

POPULAR POSTS

태그

  • JPA
  • 리트코드
  • leetcode
  • 코딩테스트
  • 트러블슈팅
  • 회고록
  • 자료구조
  • til
  • 이것이 자바다
  • Java
  • 항해99
  • Wil
  • 확인문제
  • Algorithm
  • 코테
  • 자바
  • 삽질로그
  • spring boot
  • 알고리즘
  • MySQL

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
Anna-Jin
[TIL] 07/19 항해99 72일차 - 트러블 슈팅 : 배포 후, cookie가 삭제되지 않는 문제
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.