
웹 사이트는 쿠키라는 텍스트 파일에 사용자에 대한 데이터를 저장하도록 브라우저에 지시할 수 있다. 그런 다음, 브라우저가 해당 사이트의 다른 페이지를 요청할 때마다 브라우저는 쿠키의 데이터를 서버로 다시 보낸다.
웹사이트는 브라우저에 저장된 텍스트 파일인 쿠키를 생성하도록 브라우저에 지시할 수 있다.
각 쿠키는 쿠키가 가지고 있는 정보의 유형을 설명하는 이름을 가진다. 쿠키 이름은 각 방문자에 대해 동일하다.
각 사용자의 쿠키는 사용자의 브라우저의 텍스트 파일에 저장되는 변수와 같다.
브라우저가 웹 페이지를 요청할 때, 웹 사이트는 그 페이지와 함께 추가적인 HTTP 헤더를 브라우저에 다시 보낼 수 있다.
HTTP 헤더는 생성할 쿠키의 이름과 그 쿠키에 저장해야 할 값을 브라우저에 알려준다.
쿠키에 저장되는 값은 텍스트이며 4,096자를 넘으면 안된다. 사이트는 하나 이상의 쿠키를 생성할 수도 있다.
브라우저가 쿠키를 생성한 사이트의 다른 페이지를 요청하면, 브라우저는 쿠키의 이름과 저장된 값을 페이지 요청과 함께 서버에 보낸다.
그러면 PHP 인터프리터는 쿠키 데이터를 $_COOKIE라는 슈퍼글로벌 배열에 추가하여 해당 페이지의 PHP 코드가 쿠키 데이터를 사용할 수 있게 한다. 쿠키의 이름은 키이고 그 키의 값은 쿠키에 저장된 값이다.
브라우저는 쿠키를 만든 동일한 도메인의 페이지를 요청할 때만 해당 쿠키의 데이터를 서버에 보낸다.
예를 들어, google.com이 쿠키를 생성하면 브라우저가 google.com의 페이지를 요청할 때만 쿠키가 전송된다. 이 쿠키는 절대로 facebook.com에 전송되지 않을 것이다.
쿠키를 생성하고 저장하는 것은 브라우저이므로
디바이스에 하나 이상의 브라우저가 설치되었다면, 쿠키는 쿠키가 저장된 브라우저에서만 전송된다. 해당 디바이스에 설치된 다른 브라우저는 전송하지 않는다.
사용자가 새로운 디바이스로 바꿨다면, 그 디바이스에는 서버로 보낼 쿠키가 없을 것이다.
서버는 쿠키가 만료되는 날짜와 시간을 지정할 수 있다. 이것은 브라우저가 쿠키의 데이터를 서버로 보내는 것을 멈춰야 하는 날짜와 시간이다. 만약에 만료일을 제공하지 않으면, 브라우저는 사용자가 브라우저를 닫을 때 서버로 쿠키를 보내는 것을 멈춘다.
사용자는 쿠키를 거부하거나 삭제할 수도 있으므로 사이트는 쿠키가 없어도 동작할 수 있어야 한다.
브라우저는 HTTP 요청을 사용하여 페이지를 요청한다.
서버는 요청된 페이지를 다시 보낸다.
생성할 쿠키의 이름과 저장할 값을 브라우저에 알려주는 HTTP 헤더를 추가한다.
브라우저가 페이지를 표시한다.
HTTP 헤더의 데이터를 사용하여 쿠키를 생성한다.
쿠키의 내용은 브라우저의 개발자 도구에서 볼 수 있으며 브라우저와 서버 간에 일반 텍스트로 전송되므로, 민감한 데이터(예를 들어, 이메일 주소 또는 신용카드 번호)를 쿠키에 저장하면 안 된다.
브라우저는 HTTP 요청을 사용하여 페이지를 요청한다.
쿠키의 이름과 값이 포함된 HTTP 헤더를 전송한다.
서버는 $_COOKIE에 쿠키 데이터를 추가한다.
$_COOKIE의 데이터를 사용하여 페이지를 생성한다.
요청된 페이지를 다시 보낸다.
쿠키에 저장된 값을 업데이트할 수 있다.
브라우저는 쿠키 데이터를 사용하여 생성된 페이지를 표시한다.
HTTP 헤더의 데이터를 사용하여 쿠키를 업데이트한다.
브라우저와 서버 간에 전송되는 HTTP 헤더를 누군가가 읽지 못하도록 하려면, HTTP가 아닌 HTTPS를 사용하여 사이트를 실행해야 한다. 이렇게 하면 헤더의 정보가 암호화된다.
출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022