쿠키(Cookie)
쿠키는 문자열로 이루어진 작은 데이터 조각이며, 일반적으로 웹 서버가 클라이언트(브라우저)에게 전달하는 작은 파일입니다. 쿠키는 이름-값 쌍으로 구성되며, 이 값은 일반적으로 문자열로 표현됩니다. 브라우저에서는 쿠키를 저장하고 이를 다음 요청에서 서버로 다시 전송하여 사용자가 방문한 웹 사이트에 대한 정보를 저장하고 추적합니다. 따라서 쿠키는 웹 개발에서 매우 유용한 기술 중 하나라고 볼 수 있습니다.
자바스크립트에서 쿠키의 생성 방법과 구성요소
자바스크립트에서 쿠키를 생성하는 방법은 document.cookie 를 이용하면 됩니다.
쿠키는 보통 이름, 값, 도메인, path(접근가능경로), Expires(만료기간),secure(https 제한 유무설정) 등으로 구성되며, 이 외에도 다양한 속성이 있습니다.
다음 예시는 이름, 값, 만료기한, 경로, 도메인, secure 를 사용하여 쿠키를 생성하는 예시를 정리한 것입니다.
const cookieName = "myCookie"; // 쿠키의 이름입니다. /** 이름과 값은 하나의 쌍입니다. */
const cookieValue = "hello world"; //쿠키에 저장된 값입니다.
const expirationDate = new Date();
expirationDate.setMonth(expirationDate.getMonth() + 1); //쿠키가 만료되는 기간입니다.
const path = "/"; // 설정된 경로 및 하위경로에서만 쿠키 접근이 가능합니다.
const domain = "example.com"; //해당 도메인에서만 쿠키 접근이 가능합니다.
const secure = true; //true 로 설정할 시 http2 로만 쿠키에 접근할 수 있습니다.
document.cookie = `
${cookieName}=${cookieValue}; //쿠기 이름과 값
expires=${expirationDate.toUTCString()}; //쿠키 만료일자
path=${path}; domain=${domain}; //도메인
secure=${secure}`; //secure
7주일 동안 창이 뜨지 않도록 쿠키 설정하기
모달창이 일주일 동안 뜨지 않도록 하기 위해서 쿠키의 만료기한을 설정하는 expires 를 7일로 설정하면 됩니다. 즉, 모달창의 체크박스를 checked 하는 순간 쿠키를 생성하고, 이 때 쿠키의 만료기한을 현재 날짜 기준으로 +7이 되는 날짜에 쿠키가 만료되어 사라지도록 설정합니다.
그 후 사용자가 다시 웹페이지에 방문했을 때, 쿠키의 이름과 값으로 설정했던 "hideModal=true"가 존재한다면, 모달창이 표시 되지 않도록 하고, 존재하지 않는다면 모달창의 display 를 block 으로 설정하여 화면에 표시되도록 분기처리 합니다.
// 모달 창을 닫을 때 호출되는 함수
function closeModal() {
// 체크박스 상태를 확인하여 쿠키 생성 여부를 결정합니다.
const checkbox = document.getElementById("closeModalCheckbox");
if (checkbox.checked) {
// 쿠키 만료 날짜를 7일 후로 설정합니다.
const expirationDate = new Date();
expirationDate.setDate(expirationDate.getDate() + 7);
// 쿠키를 생성합니다.
document.cookie = "hideModal=true; expires=" + expirationDate.toUTCString() + "; path=/";
}
// 모달 창을 닫습니다.
const modal = document.getElementById("myModal");
modal.style.display = "none";
}
// 페이지 로드 시 모달 창을 표시합니다.
function showModal() {
// 쿠키에서 hideModal 값이 true이면 모달 창을 표시하지 않습니다.
if (document.cookie.indexOf("hideModal=true") >= 0) {
return;
}
// 모달 창을 표시합니다.
const modal = document.getElementById("myModal");
modal.style.display = "block";
}
한 가지 더 추가 설명하자면
document.cookie.indexOf("hideModal=true") 가 가능한 이유는 쿠키가 문자열로 표기 되기 때문입니다.
예를 들어 다음과 같은 쿠키를 설정했다고 가정해봅시다.
// 쿠키 설정
document.cookie = "username=john; expires=Fri, 31 Dec 2023 23:59:59 GMT; path=/";
// 쿠키 문자열 확인
console.log(document.cookie);
이 쿠키를 출력하면 다음 처럼 문자열로 출력이 됩니다.
username=john; expires=Fri, 31 Dec 2023 23:59:59 GMT; path=/
따라서 문자열에 접근이 가능한 메서드인 indexOf()를 사용하여 이 메서드 인자로 전달된 문자열과 일치하는 경우 해당 위치의 인덱스 값을 반환하고 존재하지 않으면 -1을 반환하는 특성을 이용하여 쿠키의 이름=값의 쌍의 존재유무에 따른 분기처리를 수행할 수 있게 됩니다.
'자바스크립트' 카테고리의 다른 글
[JS] 카멜표기법으로 표기된 문자열에 공백을 추가하는 2가지 방법 (0) | 2023.03.18 |
---|---|
[javascript] 간단한 무한 스크롤 (0) | 2023.03.15 |
[js] 참조형 변수 '객체' 에 대해 알아보자 (0) | 2023.03.10 |
[js] Web Speech API 를 이용해 음성인식 가능한 검색창 만들기 (2) | 2023.02.28 |
[js] fetch 를 이용한 HTTP 요청 (0) | 2023.02.27 |