このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

CookieStore

Baseline 2025 *
最近利用可能

June 2025以降、この機能は最新のバージョンの端末およびブラウザーで動作します。古い端末やブラウザーでは動作しないことがあります。

Want more support for this feature? Tell us why.

* この機能の一部は、対応レベルが異なる場合があります。

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

メモ: この機能はサービスワーカー内で利用可能です。

CookieStore Cookie ストア API のインターフェイスで、ページまたはサービスワーカーから非同期に Cookie を取得、設定するためのメソッドを提供します。

CookieStoreWindow または ServiceWorkerGlobalScope コンテキスト内のグローバスコープの属性を介してアクセスされます。そのため、コンストラクターはありません。

EventTarget CookieStore

メソッド

CookieStore.delete()

delete() メソッドは与えられた名前またはオプションオブジェクトを持つ Cookie を削除します。 削除が完了したか、一致する Cookie がなかった場合に解決される Promise が返されます。

CookieStore.get()

get() メソッドは与えられた名前またはオプションオブジェクトで 1 つの Cookie を取得します。 1 つの Cookie の詳細に解決される Promise を返します。

CookieStore.getAll()

getAll() メソッドは一致するすべての Cookie を取得します。Cookie のリストに解決される Promise を返します。

CookieStore.set()

set() メソッドは与えられた名前と値またはオプションオブジェクトを Cookie に設定し、Cookie が設定されると解決される Promise を返します。

イベント

change

change イベントは、任意の Cookie に変更が加えられたときに発生します。

下記の実例は、コードをテスト環境にコピーしてローカルサーバーで実行するか、GitHub pages などのウェブサイトに展開することでテストできます。

この例では、namevalue を渡し、options の値を設定することで、 Cookie を設定する方法を示しています。

cookieTest() メソッドは、name および value プロパティを持つ Cookie を 1 つ、さらに namevalue、および expires プロパティを持つ Cookie をもう 1 つ設定します。 その後、CookieStore.get() メソッドを使用してそれぞれの Cookie を取得し、それらをログ出力します。

js
async function cookieTest() {
  //  Cookie を設定: 名前と値を渡す
  try {
    await cookieStore.set("cookie1", "cookie1-value");
  } catch (error) {
    console.log(`Error setting cookie1: ${error}`);
  }

  //  Cookie を設定: オプションを渡す
  const day = 24 * 60 * 60 * 1000;

  try {
    await cookieStore.set({
      name: "cookie2",
      value: "cookie2-value",
      expires: Date.now() + day,
      partitioned: true,
    });
  } catch (error) {
    log(`Error setting cookie2: ${error}`);
  }

  // 名前付き Cookie を取得し、そのプロパティを記録する
  const cookie1 = await cookieStore.get("cookie1");
  console.log(cookie1);

  const cookie2 = await cookieStore.get("cookie2");
  console.log(cookie2);
}

cookieTest();

メモ: 対応ブラウザーでは、maxAgeexpires の代わりに使用して、Cookie の有効期限を設定できます。

この例では、CookieStore.get() を使用して具体的な Cookie を取得する方法、および CookieStore.getAll() を使用してすべての Cookie を取得する方法を示しています。

このサンプルコードでは、まず get メソッドの説明に使用する 3 つの Cookie を設定します。 まず、cookie1cookie2CookieStore.set() メソッドを使用して生成します。 次に、旧式の同期型プロパティである Document.cookie を使用して 3 つ目の Cookie を生成します(これらは get() および getAll() メソッドでも取得できることを表示させるためです)。

その後、このコードでは CookieStore.get() を使用して "cookie1" を取得し、そのプロパティを出力するとともに、CookieStore.getAll()(引数なし)を使用して、現在のコンテキスト内のすべての Cookie を取得します。

js
async function cookieTest() {
  // 名前と値を指定して Cookie を設定
  try {
    await cookieStore.set("cookie1", "cookie1-value");
  } catch (error) {
    console.log(`Error setting cookie1: ${error}`);
  }

  // オプションオブジェクトを渡して Cookie を設定
  const day = 24 * 60 * 60 * 1000;
  try {
    await cookieStore.set({
      name: "cookie2",
      value: `cookie2-value`,
      expires: Date.now() + day,
      partitioned: true,
    });
  } catch (error) {
    console.log(`Error setting cookie2: ${error}`);
  }

  // document.cookie を使用して Cookie を設定
  // (これらも取得されることを示すため)
  document.cookie = "favorite_food=tripe; SameSite=None; Secure";

  // 名前付き Cookie およびログのプロパティを取得
  const cookie1 = await cookieStore.get("cookie1");
  console.log(cookie1);

  // すべての Cookie を取得し、それぞれを記録
  const cookies = await cookieStore.getAll();
  if (cookies.length > 0) {
    console.log(`getAll(): ${cookies.length}:`);
    cookies.forEach((cookie) => console.log(cookie));
  } else {
    console.log(" Cookie が見つかりません");
  }
}

cookieTest();

この例では、"cookie1" と 3 つの Cookie すべてが別個にログに出力されるはずです。 注意すべき点として、Document.cookie を使用して生成された Cookie は、set() を使用して生成された Cookie (デフォルトは /)とは異なるパスを持つことができる場合があります。

この例では、delete() メソッドを使用して、名前付き Cookie を削除する方法を示しています。

このコードはまず、2 つの Cookie を設定し、それらをコンソールにログ出力します。 次に、そのうちの 1 つの Cookie を削除し、その後、すべての Cookie を再度一覧表示します。 削除された Cookie ("cookie1") は、最初の一覧に存在しますが、2 つ目の一覧には存在しません。

js
async function cookieTest() {
  // 2 つの Cookie を設定
  try {
    await cookieStore.set("cookie1", "cookie1-value");
  } catch (error) {
    console.log(`Error setting cookie1: ${error}`);
  }

  try {
    await cookieStore.set("cookie2", "cookie2-value");
  } catch (error) {
    console.log(`Error setting cookie2: ${error}`);
  }

  //  Cookie 名をログ出力
  let cookieNames = (await cookieStore.getAll())
    .map((cookie) => cookie.name)
    .join(" ");
  console.log(`Initial cookies: ${cookieNames}`);

  // cookie1 を削除
  await cookieStore.delete("cookie1");

  // 再び Cookie をログ出力(cookie1 が削除されたのを確認するため)
  cookieNames = (await cookieStore.getAll())
    .map((cookie) => cookie.name)
    .join(" ");
  console.log(
    `削除を試みた後も残っている Cookie (cookie1 は削除されるはず): ${cookieNames}`,
  );
}

cookieTest();

仕様書

仕様書
Cookie Store API
# CookieStore

ブラウザーの互換性