CookieStore:set() 方法

基线 2025 *
新推出

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

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

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

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

CookieStore 接口的 set() 方法使用给定的 namevalueoptions 对象设置 Cookie。

语法

js
set(name, value)
set(options)

参数

此方法需要以下之一:

name 可选

包含 Cookie 名称的字符串。

value 可选

包含 Cookie 值的字符串。

或者

options 可选

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

domain 可选

包含 Cookie 域名的字符串。默认为 null

expires 可选

一个时间戳,以毫秒为单位的 Unix 时间,包含 Cookie 的过期日期。默认为 null

name

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

partitioned 可选

一个布尔值,默认为 false。如果设置为 true,则设置的 Cookie 将是分区 Cookie。有关更多信息,请参阅 具有独立分区状态的 Cookie (CHIPS)

path 可选

包含 Cookie 路径的字符串。默认为 /

sameSite 可选

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

value

包含 Cookie 值的字符串。

注意: 虽然此处可以设置值并在内部使用,但某些浏览器仅从 CookieStore.get()CookieStore.getAll() 返回 namevalue 选项。

返回值

一个 Promise,当设置 Cookie 完成时,它将使用 undefined 解析。

异常

SecurityError DOMException

如果源无法 序列化 为 URL,则抛出此异常。

TypeError

如果使用给定的 namevalueoptions 设置 Cookie 失败,则抛出此异常。

示例

此示例通过分别传递 "cookie1" 和 "cookie1-value" 的 namevalue 来设置 Cookie。Cookie 的其他属性将使用 options 参数中定义的默认值进行设置。

代码首先等待 Cookie 设置完成:由于此操作可能会失败,因此该操作在 try...catch 块中执行,并将任何错误记录到控制台。然后,它获取并记录刚刚设置的 Cookie。

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

  // Get the cookie and log its values
  const cookie = await cookieStore.get("cookie1");
  console.log(cookie);
}

此示例通过传递包含 namevalueexpirespartitionedoptions 对象来设置 Cookie。

代码首先等待 Cookie 设置完成:由于此操作可能会失败,因此该操作在 try...catch 块中执行,并将任何错误记录到控制台。然后,它获取并记录刚刚设置的 Cookie。

js
async function cookieTest() {
  const day = 24 * 60 * 60 * 1000;
  const cookieName = "cookie2";
  try {
    // Set cookie: passing options
    await cookieStore.set({
      name: cookieName,
      value: `${cookieName}-value`,
      expires: Date.now() + day,
      partitioned: true,
    });
  } catch (error) {
    log(`Error setting ${cookieName}: ${error}`);
    console.log(error);
  }

  // Log the new cookie
  const cookie = await cookieStore.get(cookieName);
  console.log(cookie);
}

规范

规范
Cookie Store API
# dom-cookiestore-set

浏览器兼容性