프로그래밍/React

쿠키로 상태 유지

이재만박사 2024. 3. 13. 10:02

웹 브라우징할 때 쿠키는 까페의 쿠폰과 같은 역할

 

까페에 방문할 때마다 쿠폰을 가져가서

 

커피를 구매하면 스탬프를 받듯이

 

브라우저도 서버로부터 받은 쿠키를 저장해 두었다가 

 

웹사이트에 다시 방문할 때마다 

 

해당 쿠키 정보를 서버로 자동 전송

 

이 과정은 cookie 라는 요청 헤더를 통해서 진행

 

서버는 사용자의 행동에 따라 

 

새로운 쿠키를 발급하거나

 

기존 쿠키를 업데이트 

 

해야 한다고 판단할 때 

 

응답 헤더에 Set-Cookie 를 포함시켜

 

쿠키 정보를 전달하면

 

브라우저는 이 쿠키를 저장

 

쿠키의 만료 시간을 Expires 로 설정

 

브라우저는 해당 웹사이트에 요청을 보낼 때마다

 

cookie 헤더를 통해 자동으로 전송

 

쿠키는 발급된 도메인에 한해서만 유효

 

이것은 특정 까페에서만 사용되는 쿠폰과 같음

 

 

쿠키는 서버와 클라이언트 간에

 

정보를 공유고 교환하기 위한 데이터 저장 구조 방식

 

웹사이트에서 보내는 모든 요청은 쿠키를 자동 전송

 

웹사이트 방문, 웹사이트 새로고침, 링크 클릭,

 

자바스크립트를 이용한 http 요청에서 쿠키는 자동 전송

 

응답 객체에서 set_cookie로 설정된 쿠키 값은 

 

사용자가 브라우저 개발자 도구를 통해 

 

손쉽게 바꿀 수 있음

 

만약 사용자의 쿠키 값 변경을 막으려면

 

set_signed_cookie( ) 를 이용해서

 

서명된 쿠키를 생성

 

서명된 쿠키는 브라우저에서

 

값 확인만 가능하고 변경은 불가능

 

쿠키는 이름 : 값으로 설정

 

추가로 만료 시간인 max_age와 expires 인자 설정

 

쿠키가 유효한 도메인을 지정하는 domain 인자

 

https에서만 설정되는 secure 인자

 

다른 사이트로의 요청에서 쿠키 전송에 대한 정책을 지정하는

 

samesite 인자

 

브라우저에서는 document.cookie 문자열 속성을 이용해 

 

브라우저의 쿠키 내역을 확인

 

쿠키 생성할 때 httponly 옵션이 설정된 쿠키는

 

자바스크립트를 통해서는 조회할 수 없고

 

브라우저의 개발자 도구로는 모든 쿠키 확인

 

쿠키는 브라우저의 개발자 도구에

 

애플리케이션 - 쿠키 에서 확인하고

 

이곳에서 직접 수정 가능

 

쿠폰 적립 횟수 같은 정보는 사용자가 쉽게 변경 가능해서

쿠키에 저장하는 것은 적절하지 않음

 

쿠키에 저장하기 적절한 예시

 

사용자 선호, 테마 설정, 장바구나 정보, 

 

최근 검색어, 최근 본 상품, 광고 추적 ID 등

 

민감하지 않은 상태 정보들

 

 

HTTP에서는 다른 페이지와 상태를 공유하기 위해 쿠키를 사용

 

스탬프 적립할 때 쿠키에 전화번호를 저장 

 

다른 페이지에서 쿠키의 전화번호를 조회