쿠키(Cookie)란 무엇인가?
웹에서 쿠키(cookie)는 서버가 방문자의 브라우저로 전송하는 작은 데이터 조각입니다. 브라우저가 이 쿠키를 수락하면, 해당 데이터는 방문자의 하드 드라이브에 일반 텍스트(plain text) 레코드 형태로 저장됩니다.
이후 방문자가 같은 사이트의 다른 페이지에 접속하면, 브라우저는 저장해 두었던 쿠키를 자동으로 서버에 다시 전송합니다. 서버는 이 값을 확인함으로써 이전에 저장된 정보를 알아차리고 기억할 수 있습니다. 바로 이 원리 덕분에 로그인 상태 유지, 장바구니 저장, 사용자 설정 기억 같은 기능이 가능해집니다.
쿠키의 기본 구조: 5개의 가변 길이 필드
쿠키는 본질적으로 5개의 가변 길이 필드로 구성된 일반 텍스트 데이터 레코드입니다. 각 필드의 역할은 다음과 같습니다.
1. Expires (만료일)
쿠키가 만료되는 날짜를 지정합니다. 이 값이 비어 있으면 쿠키는 세션 쿠키(session cookie)가 되어, 방문자가 브라우저를 종료하는 시점에 함께 삭제됩니다.
2. Domain (도메인)
쿠키를 발급한 사이트의 도메인 이름을 나타냅니다. 브라우저는 이 도메인 정보를 기준으로 해당 사이트에 접속할 때만 쿠키를 전송합니다.
3. Path (경로)
쿠키를 설정한 디렉터리 또는 웹 페이지의 경로를 의미합니다. 사이트 내 어떤 디렉터리나 페이지에서든 쿠키를 검색하고 싶다면 이 값을 비워 두면 됩니다.
4. Secure (보안)
이 필드에 "secure"라는 단어가 포함되어 있으면, 해당 쿠키는 보안 서버(HTTPS)를 통해서만 검색할 수 있습니다. 값이 비어 있다면 일반 연결에서도 쿠키를 주고받을 수 있습니다.
5. Name = Value (이름 = 값)
쿠키의 실제 데이터는 키-값(key-value) 쌍 형태로 설정되고 조회됩니다. 예를 들어 username=hong처럼 이름과 값을 지정하여 저장합니다.
정리
쿠키는 서버와 브라우저 사이에서 상태(state)를 유지하기 위한 가장 기본적인 메커니즘입니다. 만료 시점, 적용 도메인과 경로, 보안 여부, 그리고 실제 데이터인 키-값 쌍까지, 위 5가지 필드의 의미를 정확히 이해하면 자바스크립트에서 document.cookie를 활용한 쿠키 처리 로직을 훨씬 안전하고 효율적으로 작성할 수 있습니다.