Cookie   쿠키

(2023-12-06)

1. 쿠키 (Cookie)인터넷  상에서, 서버측에서 관리하려는 상태정보를, 
     - 서버가 아닌 클라이언트측(인터넷 웹브라우저)에 저장하며,
     - 서버측에서 필요시 마다 이를 지속성있게 활용하고자 할 때 사용

  ※ 결국, 쿠키는 웹 서버에 의해 통제되는 개념임


2. 쿠키의 사용이유의 기능구현상 주요 단점
     - 어떤 요청에 대해 단지 하나의 응답만이 있을 뿐    ☞  HTTP 참조
        . 즉, 상태유지를 위한 변수서버측에 할 수 없으며,
        . 이에따라 서버측은 사용자에 대한 지속적인 상태감시 및 상태참조가 어려움

  ※ 따라서, 이를 해결하기 위한 수단으로, 사용자용 프로그램웹브라우저에다가,
     - 서버측이 원하는 상태 값들을 저장할 수 있게하도록 한 것이 바로 쿠키임


3. 쿠키의 형식, 저장, 송출, 수명, 제한

  ㅇ 쿠키 형식
     - HTTP 헤더 항목
        . Set-Cookie: 서버측에서 상태 정보를 웹브라우저에게 저장
        . Cookie: 웹브라우저서버에게 당시 저장된 상태 정보를 제출
     - 쿠키 내용은, `Set-Cookie: name1=value1; name2=value2; ...` 형식을 갖춤

  ㅇ 쿠키 저장
     - 웹 서버는, HTTP 헤더 내, `Set-Cookie:`란에 셋팅할 쿠키 관련 정보를 실려 보냄
     - 웹 브라우저는, 쿠키를 도메인 서버 이름으로 정렬된, `쿠키 디렉토리`에 저장

  ㅇ 쿠키 검색 및 송출
     - 웹브라우저서버웹페이지 요청을 보낼 때, 
     - 웹브라우저가 보유하는 쿠키 디렉토리에서 해당 서버의 쿠키 정보가 있으면,
     - 해당 쿠키를 HTTP 요청 메세지(HTTP 헤더 내 `Cookie:`)에 무조건 포함시켜 송출함

  ㅇ 쿠키 수명
     - 기본적으로, 웹 브라우저의 종료시까지 임
        . 웹브라우저 종료하면 쿠키 정보가 삭제됨

  ㅇ 쿠키 제한
     - 내용 보기의 제한
        . 쿠키 내용은, 웹브라우저에서 동작하는 자바스크립트 등에 의해, 
        . 현재 접속된 사이트 것 만 읽힐 수 있음 (document.cookie)
        . 타 사이트 쿠기는 보이지 않음
     - 용량 제한 : 각 사이트별 최대 4 킬로 바이트 전달/저장 용량 제한


4. HTTP 헤더 항목 내 쿠키 관련 속성들

  ㅇ 쿠키 수명 결정
     - Expires (특정 시각까지 수명) : 웹브라우저가 실행되는 컴퓨터 시계를 기준으로 결정됨
     - Max-Age (초 단위 최대 수명)
  ㅇ Domain : 대상 서버 도메인
  ㅇ Path : 서버 내 경로
  ㅇ Secure : HTTPS 일 경우에 만, 서버측에게 쿠키 전송 가능
  ㅇ HttpOnly : 자바스크립트가 쿠키 내용 볼 수 없게 함


5. (언어별 쿠키 사용)
  
  ㅇ [PHP]  ☞ PHP 쿠키, PHP 세션 참조

  ㅇ [자바스크립트]
     - 접근 형식 : document.cookie 
        . 쿠키 보기 例) console.log(document.cookie); // 현재 저장된 쿠키 모두를 콘솔에 보여줌
        . 쿠키 설정 例) document.cookie = "count=3;name=test"; // "이름1=값1;이름2=값2" 쌍

     * 통상, 인코딩 형식에 일관성을 주기 위하여, 다음과 같이 인코딩하여 지정 함 
        . let cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`

웹 기능 요소
   1. 링크   2. 애플릿   3. 앵커   4. 쿠키   5. 태그   6. 위젯/가젯   7. 툴팁  
HTTP
   1. HTTP   2. HTTP 메세지   3. HTTP 메소드   4. HTTP 상태코드   5. 프록시   6. 프록시 보안   7. HTTP 캐시   8. 쿠키   9. HTTPS   10. HTTP 표준  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"