CookieStore: getAll() 方法

基準線 2025
新推出

自 2025 年 6 月起,此功能已在最新的裝置和瀏覽器版本中可用。此功能可能不適用於舊裝置或瀏覽器。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Service Workers 中可用。

CookieStore 介面的 getAll() 方法返回一個 Promise,該 Promise 解析為一個匹配傳遞給它的 nameoptions 的 cookie 陣列。不傳遞任何引數將返回當前上下文的所有 cookie。

語法

js
getAll()
getAll(name)
getAll(options)

引數

name 可選

一個包含 cookie 名稱的字串。

或者

options 可選

一個包含以下內容的 Shoppee 物件:

name

一個包含 cookie 名稱的字串。

url

包含 cookie URL 的字串。

注意:url 選項允許修改特定 URL 下的 cookie。Service worker 可以獲取將傳送到其作用域下的任何 URL 的 cookie。從文件中,您只能獲取當前 URL 的 cookie,因此在文件上下文中唯一的有效 URL 是文件的 URL。

返回值

一個 Promise,它會解析為一個物件陣列,代表與給定 nameoptions 匹配的 cookie。

每個物件包含以下屬性:

包含 cookie 域名的字串。

expires

一個時間戳,以 Unix 時間(毫秒)給出,包含 cookie 的過期日期。

name

包含 cookie 名稱的字串。

partitioned

一個布林值,指示 cookie 是否為分割槽 cookie(true)或不是(false)。有關更多資訊,請參閱 具有獨立分割槽狀態的 Cookie (CHIPS)

路徑

包含 cookie 路徑的字串。

sameSite

以下 SameSite 值之一:"strict""lax""none"

secure

一個布林值,指示 cookie 是否僅用於安全上下文(true)或不用於(false)。

value

包含 cookie 值的字串。

異常

SecurityError DOMException

如果源無法 序列化 為 URL,則丟擲此異常。

TypeError

在以下情況下丟擲

  • 該方法在主執行緒中呼叫,並且指定了 url 選項,但該選項與當前視窗的 URL 不匹配。
  • 該方法在 worker 中呼叫,並且指定了 url 選項,但該選項與 worker 的源不匹配。
  • 查詢由給定 nameoptions 表示的 cookie 失敗。

示例

獲取此上下文的所有 cookie

此示例展示瞭如何獲取當前上下文中的所有 cookie。

首先,我們定義 setTestCookies(),它建立測試 cookie "cookie1" 和 "cookie2",並記錄任何錯誤。

js
async function setTestCookies() {
  // Set two cookies
  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}`);
  }
}

cookieTest() 方法呼叫 setTestCookies(),然後等待 getAll()。這將返回一個 Promise,該 Promise 解析為當前上下文的所有 cookie,表示為一個物件陣列,如果沒有 cookie 則返回一個空陣列。如果返回的 Promise 解析為一個包含 cookie 資訊的陣列,我們會遍歷該陣列並記錄每個 cookie("cookie1" 和 "cookie2")。

js
async function cookieTest() {
  // Set our test cookies
  await setTestCookies();

  // Get all cookies
  const cookies = await cookieStore.getAll();

  // Iterate the cookies, or log that none were found
  if (cookies.length > 0) {
    console.log(`Found cookies: ${cookies.length}:`);
    cookies.forEach((cookie) => console.log(cookie));
  } else {
    console.log("Cookies not found");
  }
}

規範

規範
Cookie Store API
# dom-cookiestore-getall

瀏覽器相容性