JavaScript로 Cookie에 데이터 저장하는 방법 알아보기

JavaScript로 Cookie에 데이터 저장하는 방법 알아보기

Cookie란 무엇인가요?

 

Cookie는 웹사이트에서 사용자의 브라우저에 저장하는 작은 데이터입니다.

 

주로 사용자 식별, 상태 유지, 그리고 맞춤화를 위해 사용되며, 다음과 같은 용도로 활용됩니다:

•    세션 관리: 로그인 정보나 장바구니에 담긴 상품 데이터를 유지.
•    개인화: 언어 설정, 테마 등 사용자가 선택한 환경을 저장.
•    트래킹: 사용자의 행동을 추적하여 분석이나 광고에 활용.

 

Cookie는 웹 서버 또는 JavaScript를 통해 브라우저에 저장되고, 이후 요청에서 서버로 전송됩니다.

 

Cookie에 데이터를 저장하는 방법

 

Cookie는 아래와 같은 형식으로 데이터를 저장합니다:

 

key=value; expires=date; path=/; domain=example.com; secure; HttpOnly;

 

간단히 말해 key(데이터 이름)에 value(실제 데이터)를 저장한다고 볼 수 있습니다.

 

각 속성은 다음과 같은 역할을 합니다:

    •    key=value: 저장할 데이터의 이름과 값을 나타냅니다.
        예: username=JohnDoe
    •    expires: Cookie의 유효기간을 설정합니다. 해당 시간이 지나면 Cookie는 만료됩니다.
        예: expires=Fri, 31 Dec 2024 23:59:59 GMT
    •    path: Cookie가 유효한 URL 경로를 지정합니다.
        예: path=/ (사이트 전체에서 유효)
    •    domain: Cookie가 유효한 도메인을 지정합니다.
        예: domain=example.com
    •    secure: HTTPS 통신에서만 Cookie를 전송하도록 설정합니다.
    •    HttpOnly: JavaScript에서 Cookie를 조작하지 못하도록 설정하여 보안을 강화합니다.

 

Cookie를 활용한 데이터 저장 예제

 

구현할 기능

 

JavaScript만 사용하여, 다음과 같은 간단한 기능을 구현합니다:


1. 사용자가 텍스트를 입력하고 저장 버튼을 누르면, 해당 텍스트가 Cookie에 저장됩니다.
2. 저장된 텍스트는 페이지를 새로고침해도 사라지지 않고 화면에 표시됩니다.

 

HTML 코드

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Cookie 데이터 저장</title>
</head>
<body>
  <h1>Cookie에 데이터 저장하기</h1>
  <form id="textForm">
    <label for="textInput">텍스트를 입력하세요:</label><br>
    <input type="text" id="textInput" required>
    <button type="submit">저장</button>
  </form>
  <h2>저장된 데이터</h2>
  <ul id="historyList"></ul>

  <script src="script.js"></script>
</body>
</html>

 

JavaScript 코드

// Cookie에 데이터 저장
function setCookie(name, value, days) {
  const date = new Date();
  date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
  const expires = date.toUTCString();
  document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`;
}

// Cookie에서 데이터 가져오기
function getCookie(name) {
  const cookies = document.cookie.split("; ");
  for (let cookie of cookies) {
    const [key, val] = cookie.split("=");
    if (key === name) {
      return decodeURIComponent(val).split(",");
    }
  }
  return [];
}

// 저장된 데이터 화면에 출력
function renderHistory() {
  const historyList = document.getElementById("historyList");
  const history = getCookie("history").filter(Boolean);
  historyList.innerHTML = "";
  history.forEach(item => {
    const li = document.createElement("li");
    li.textContent = item;
    historyList.appendChild(li);
  });
}

// 폼 이벤트 처리
document.getElementById("textForm").addEventListener("submit", (e) => {
  e.preventDefault();
  const textInput = document.getElementById("textInput");
  const newText = textInput.value.trim();
  if (newText) {
    const currentHistory = getCookie("history");
    currentHistory.push(newText);
    setCookie("history", currentHistory.join(","), 7);
    renderHistory();
    textInput.value = "";
  }
});

// 페이지 로드 시 데이터 출력
window.onload = renderHistory;

 

코드 설명

    •    setCookie 함수:
데이터를 지정된 기간 동안 Cookie에 저장합니다.
예: setCookie("history", "example", 7);
    •    getCookie 함수:
특정 키(name)에 저장된 데이터를 가져옵니다. 이 예제에서는 데이터를 배열로 반환하도록 작성했습니다.
    •    renderHistory 함수:
Cookie에 저장된 데이터를 화면에 출력합니다.
    •    폼 이벤트:
사용자가 텍스트를 입력하고 저장 버튼을 누르면, 입력값이 Cookie에 저장되고 목록에 추가됩니다.

 

마무리

 

Cookie는 웹 애플리케이션에서 데이터를 간단히 저장하고 관리하는 데 유용합니다.

 

하지만 민감한 데이터는 반드시 보안 설정(secure, HttpOnly)을 통해 보호해야 합니다.

 

이번 예제를 따라하며 Cookie 사용 방법을 익혀보세요!