728x90
바야흐로 7월 말.. 백엔드 리팩토링과 테스트 코드를 작성하고 있던 나에게 성큼 다가온 이슈...
브라우저에서 쿠키가 저장되지 않음
.
.
.
프론트엔드와 개발을 구분해서 하고있기 때문에 API 구현 후 postman과 swagger로 테스트를 마친 이후였다.
그래서 상상도 못했던 이슈였고... 프론트 팀원과 둘다 처음 겪는 문제여서 열심히 구글링을 해서 원인을 알게 되었다.
원인
- 백엔드 서버 = http, 프론트 서버 = http
- Chrome80 버전 이후 Cross Domain 상황에서의 Set-Cookie 정책이 변경됨
- SameSite=None 을 통해서 제약없이 쿠키 교환이 가능하나 해당 옵션을 사용하기 위해서는 Secure Cookie + https 통신을 통해서만 교환이 가능
해결
1. HTTPS 적용하기
https://un-lazy-midnight.tistory.com/172
2. 코드 변경 (AuthController의 login())
// RT 저장
ResponseCookie responseCookie = ResponseCookie.from("refresh-token", tokenDto.getRefreshToken())
.maxAge(COOKIE_EXPIRATION)
.path("/")
.httpOnly(true)
.sameSite("None")
.secure(true)
.build();
참고:
https://kindloveit.tistory.com/100
https://ppaksang.tistory.com/15
https://coding-factory.tistory.com/843
728x90
'💻dev > 🔧오류와 해결' 카테고리의 다른 글
CentOS7에 Java17 수동으로 설치하기 (0) | 2024.03.25 |
---|---|
[해결] Spring Security WebSecurityConfigurerAdapter Deprecated 대체하기 (0) | 2023.08.09 |
[해결] (Spring) Ambiguous handler methods mapped for HTTP path 오류 (0) | 2023.08.02 |
[해결] AWS EC2 퍼블릭 IP 바뀜 -> 고정 IP 사용하기 (0) | 2023.07.04 |
[해결] EC2 서버가 자꾸 죽을 때.... SWAP 메모리 설정을 하자!(AWS EC2 프리티어 메모리 부족 해결방법) (0) | 2023.06.23 |