Chrome set-cookie not working
최근 잘 동작하던 로그인 기능에서 sessionId 쿠키가 제대로 저장되지 않는 문제가 발생했습니다.
Chrome 브라우저에서만 발생했고, 다른 브라우저(웨일, Edge)에서는 정상적으로 쿠키가 저장되었습니다.
개발자 도구의 네트워크 탭에서 확인한 결과, 아래 이미지와 같은 문구가 나왔습니다.

쿠키 설정 확인
해당 쿠키의 설정은 아래 이미지와 같이 설정되어 있었습니다.

쿠키와 보안 정책
이 문제와 관련하여 HTTP와 HTTPS 간의 쿠키 공유와 관련된 몇 가지 보안 정책을 이해할 필요가 있습니다:
1. Secure 플래그
쿠키에 Secure 플래그가 설정되어 있다면, 해당 쿠키는 HTTPS 연결에서만 전송됩니다. 따라서 HTTP로 접속할 경우 이 쿠키는 전송되지 않습니다. 이 설정은 쿠키가 암호화되지 않은 채로 전송되는 것을 방지하기 위해 사용됩니다.
2. SameSite 속성
SameSite 속성은 쿠키가 크로스 사이트 요청에 사용되는 것을 제한합니다. SameSite=None으로 설정된 쿠키는 Secure 플래그가 필요하며, 이는 보안을 강화하기 위한 조치입니다.
3. 브라우저의 보안 정책
브라우저는 보안을 강화하기 위해 HTTPS로 전환할 때 쿠키를 보다 엄격하게 관리합니다. HTTPS에서 생성된 쿠키는 HTTP로 전송되지 않도록 설정되어 있을 수 있습니다.
HTTP와 HTTPS의 차이
찾아보니, HTTP와 HTTPS 간의 쿠키 동작에 차이가 있는 것은 보안 및 개인정보 보호를 위해 설계된 것이었습니다.
- HTTPS는 SSL/TLS를 통해 데이터를 암호화하여 안전하게 보호하며, 서버와 통신할 때 쿠키는 안전하게 전송됩니다.
- 반면 HTTP는 암호화되지 않은 통신을 사용하므로 쿠키 정보가 쉽게 가로채질 수 있어 보안에 취약합니다.
해결 방법
Secure 플래그가 설정된 쿠키가 HTTPS 연결에서만 작동하도록 하기 때문에 HTTPS로 접속한 후 기존에 저장되었던 sessionId 쿠키를 삭제하고 HTTP로 접속하여 새로고침하면, 쿠키가 정상적으로 저장되는 것을 확인할 수 있습니다.