쿠키란
Set-Cookie
에 내용을 넣어 전달하면, 브라우저는 이 내용을 자체적으로 브라우저에 저장Set-Cookie
에 담긴 “세션 식별자(session identifier)” 정보를 사용해 쿠키를 설정합니다.Cookie
헤더에 인증 정보가 담긴 고윳값(세션 식별자)을 함께 실어 서버에 요청을 보냅니다.document.cookie
는 쿠키에 접근할 수 있도록 해줍니다.
쿠키 옵션:
path=/
의 기본값은 현재 경로이고, 설정한 경로나 그 하위 경로에서만 쿠키 정보를 볼 수 있습니다.domain=site.com
옵션에 아무런 값을 입력하지 않았다면 쿠키를 설정한 도메인에서만 쿠키 정보를 얻을 수 있습니다. 명시적으로 도메인 주소를 설정한 경우엔, 해당 도메인의 서브 도메인에서도 쿠키 정보를 얻을 수 있습니다.expires/max-age
는 쿠키의 만료 시간을 정해줍니다. 이 옵션이 없으면 브라우저가 닫힐 때 쿠키도 같이 삭제됩니다.secure
는 HTTPS 연결에서만 쿠키를 사용할 수 있게 합니다.samesite
는 요청이 외부 사이트에서 일어날 때, 브라우저가 쿠키를 보내지 못하도록 막아줍니다. XSRF 공격을 막는 데 유용합니다.추가 사항:
/* 쿠키 쓰기 */
// // 특수 값(공백)은 인코딩 처리해 줘야 합니다.
// let name = "my name";
// let value = "John Smith";
// let add = "AddValue";
// // 인코딩 처리를 해, 쿠키를 my%20name=John%20Smith 로 변경하였습니다.
// document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) + "&&&" + encodeURIComponent(add);
// alert( document.cookie ); // my%20name=John%20Smith&&&AddValue
// =============================================================
/* domain */
//// 서브 도메인에서도 메인 도메인에서 생성한 쿠키 정보 얻어오기
// document.cookie = "user=111; domain=127.0.0.1";
// alert(document.cookie);
// =============================================================
/* expires와 max-age */
//// 지금부터 하루 후인 Expire 지정
// let date = new Date(Date.now() + 86400e3);
// date = date.toUTCString();
// document.cookie = "user=222; domain=127.0.0.1; expires=" + date;
// alert(document.cookie);
// max-age >>> 5초 지정
// 만료 기간을 5으로 지정하여 쿠키를 바로 삭제함
document.cookie = "user=333; max-age=1";
alert(document.cookie);
HTTP의 일종으로 사용자가 어떤 웹 사이트를 방문할 경우, 해당 사이트가 사용하고 있는 서버에서
사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.
HTTP에서 클라이언트의 상태정보를 쿠키 형태로 클라이언트 PC에 저장하였다가 필요 시 정보를 참조하거나 재사용할 수 있다.
Key-Value
쌍으로 구성되어 있는 데이터 파일이다.set-cookie:
를 통해 쿠키를 추가하여 응답쿠키의 기한이 정해져 있지 않고 명시적으로 지우지 않는다면 반 영구적으로 쿠키가 남아있다.
보안과 인증은 현시대에 있어서 매우 필수이다.
그렇기 때문에, HTTP 프로토콜의 특징이자 약점을 보호하기 위해 쿠키를 사용한다.
이외에도 쿠키는 주로 다음과 같은 목적으로 사용한다.
보안과 인증은 현시대에 있어서 매우 필수이다. 또한, 개인의 특성에 맞추어 데이터를 보여주는 것 역시 중요한 요소이다.
그것과 관련된 기능을 수행하는 쿠키를 배웠다.
CS 지식에서도 핵심이고, 또 회사 면접에서도 자주 나오는 쿠키에 대해 더 자세히 배울 수 있어 좋았다.