자바스크립트 쿠키란 무엇인가?
자바스크립트 쿠키는 방문자의 선호 설정, 구매 내역, 커미션 등 사이트 통계나 더 나은 방문자 경험에 필요한 정보를 기억하고 추적하는 가장 효율적인 방법입니다. 별도의 서버 작업 없이 브라우저 측에서 직접 데이터를 관리할 수 있다는 것이 큰 장점입니다.
PHP 쿠키란 무엇인가?
쿠키는 클라이언트 컴퓨터에 저장되는 텍스트 파일로, 사용자 정보를 추적하는 목적으로 유지됩니다. PHP는 HTTP 쿠키를 투명하게 지원하므로, 개발자가 별도의 복잡한 처리 없이도 쿠키를 손쉽게 활용할 수 있습니다.
자바스크립트 쿠키의 작동 원리
서버는 방문자의 브라우저에 쿠키 형태로 데이터를 전송합니다. 브라우저가 이 쿠키를 수락하면, 해당 쿠키는 방문자의 하드 드라이브에 일반 텍스트 레코드로 저장됩니다.
이후 방문자가 같은 사이트의 다른 페이지에 접속하면, 브라우저는 저장해 두었던 동일한 쿠키를 서버로 다시 전송합니다. 서버가 이 쿠키를 받아 조회하면, 이전에 저장했던 정보를 그대로 알아내거나 기억할 수 있습니다.
쿠키에 담긴 데이터는 웹 브라우저와 웹 서버 사이에서 자동으로 오가기 때문에, 서버에 있는 CGI 스크립트는 클라이언트에 저장된 쿠키 값을 읽고 쓸 수 있습니다.
또한 자바스크립트는 Document 객체의 cookie 속성을 통해 쿠키를 직접 조작할 수 있습니다. 즉, 현재 웹 페이지에 적용되는 쿠키를 읽고, 생성하고, 수정하고, 삭제하는 것이 모두 가능합니다.
PHP 쿠키의 작동 원리
쿠키는 일반적으로 HTTP 헤더에서 설정됩니다(물론 자바스크립트가 브라우저에서 직접 쿠키를 설정할 수도 있습니다). 쿠키를 설정하는 PHP 스크립트는 대략 다음과 같은 헤더를 전송합니다.
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name = xyz; expires = Friday, 04-Feb-07 22:03:38 GMT;
path = /; domain = tutorialspoint.com
Connection: close
Content-Type: text/html위 예시에서 볼 수 있듯이, Set-Cookie 헤더에는 이름-값(name-value) 쌍, GMT 날짜, 경로(path), 도메인(domain)이 포함됩니다. 이름과 값은 URL 인코딩되며, 'expires' 필드는 지정된 날짜와 시간이 지난 후 쿠키를 삭제하도록 브라우저에 지시하는 역할을 합니다.
PHP는 setcookie() 함수를 제공하여 쿠키를 설정합니다. 이 함수는 최대 6개의 인수를 받으며, 반드시 <html> 태그보다 먼저 호출되어야 한다는 점에 유의해야 합니다.
자바스크립트 쿠키와 PHP 쿠키의 핵심 차이점
두 쿠키 모두 결국 클라이언트에 저장되는 텍스트 데이터라는 점은 같지만, 설정 위치와 제어 방식에서 차이가 있습니다.
- 설정 주체: 자바스크립트 쿠키는 브라우저(클라이언트) 측에서 Document 객체로 설정·조작하는 반면, PHP 쿠키는 서버가 HTTP 응답 헤더(Set-Cookie)를 통해 설정합니다.
- 처리 시점: PHP 쿠키는 페이지가 출력되기 전, 즉 <html> 태그 이전에 setcookie() 함수로 설정해야 하지만, 자바스크립트 쿠키는 페이지 로드 후 언제든 동적으로 생성·수정·삭제할 수 있습니다.
- 활용 방식: 자바스크립트 쿠키는 실시간 UI 상태 저장 등 클라이언트 중심 작업에 적합하고, PHP 쿠키는 세션 식별, 로그인 유지 등 서버와 연동되는 추적 작업에 적합합니다.