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

瀏覽器相容性