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

浏览器兼容性