CookieStore: get() 方法

基线 2025 *
新推出

自 2025 年 6 月起,此功能已在最新的设备和浏览器版本中可用。此功能可能不适用于旧设备或浏览器。

* 此特性的某些部分可能存在不同级别的支持。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

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

CookieStore 接口的 get() 方法返回一个 Promise,该 Promise 解析为一个与给定的 nameoptions 对象匹配的单个 cookie。该方法将返回第一个匹配的 cookie。

语法

js
get(name)
get(options)

参数

此方法需要以下之一:

name 可选

一个包含 cookie 名称的字符串。

或者

options 可选

一个包含以下内容的 Shoppee 对象:

name

一个包含 cookie 名称的字符串。

url

包含 cookie URL 的字符串。

注意: url 选项允许修改特定 URL 范围内的 cookie。Service worker 可以获取将被发送到其作用域内任何 URL 的 cookie。从文档中,您只能获取当前 URL 的 cookie,因此在文档上下文中唯一有效的 URL 是文档的 URL。

返回值

一个 Promise,该 Promise 解析为一个对象,该对象代表与提交的 nameoptions 匹配的第一个 cookie,如果不存在匹配的 cookie,则为 null

匹配时返回的对象包含以下属性

包含 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

在以下情况下抛出

  • options 参数是一个空对象。
  • 该方法在主线程中调用,并且指定了 url 选项,但该选项与当前窗口的 URL 不匹配。
  • 该方法在 worker 中调用,并且指定了 url 选项,但该选项与 worker 的源不匹配。
  • 查询由给定 nameoptions 表示的 cookie 失败。

示例

本示例展示了如何按名称获取特定 cookie。

代码首先使用 CookieStore.set() 创建一个名为“cookie1”的 cookie,并将任何错误记录到控制台。然后,它等待 get() 检索有关同一 cookie 的信息。如果返回的 Promise 解析为一个对象,则记录 cookie;否则,记录未找到匹配的 cookie。

js
async function cookieTest() {
  // Set test cookie
  try {
    await cookieStore.set("cookie1", "cookie1-value");
  } catch (error) {
    console.log(`Error setting cookie1: ${error}`);
  }

  // Get cookie, specifying name
  const cookie = await cookieStore.get("cookie1");

  if (cookie) {
    console.log(cookie);
  } else {
    console.log("cookie1: Cookie not found");
  }
}

cookieTest();

规范

规范
Cookie Store API
# dom-cookiestore-get

浏览器兼容性