cookies.set()

设置一个 cookie。此方法等效于在请求 URL 时发出 HTTP Set-Cookie 标头。

要使用此方法,扩展程序必须具有 "cookies" 权限和相关的宿主权限。有关更多详细信息,请参阅 cookie 权限

语法

js
let setting = browser.cookies.set(
  details               // object
)

参数

details

一个包含您要设置的 cookie 详细信息的 object。它可以包含以下属性

domain 可选

表示 cookie 域名的 string。如果省略,cookie 将成为一个仅限宿主的 cookie。

expirationDate 可选

一个 number,表示 cookie 的过期日期,即自 UNIX 纪元以来的秒数。可以包含毫秒作为小数部分。如果省略,cookie 将成为一个会话 cookie。

firstPartyDomain 可选

表示 cookie 所属的第一方域名的 string。如果浏览器启用了第一方隔离,则必须提供此属性。请参阅 第一方隔离

httpOnly 可选

一个 boolean,指定 cookie 是否被标记为 HttpOnly(true)或不是(false)。如果省略,默认为 false

name 可选

表示 cookie 名称的 string。如果省略,默认为空。

partitionKey 可选

一个表示要设置 cookie 的 存储分区object。包含此对象以在分区存储中设置 cookie。此对象包含

topLevelSite 可选

表示包含 cookie 的顶级网站存储分区的第一个 URL 的 string

path 可选

表示 cookie 路径的 string。如果省略,默认为 URL 参数的 path 部分。

sameSite 可选

一个 cookies.SameSiteStatus 值,指示 cookie 的 SameSite 状态。如果省略,默认为 unspecified

secure 可选

一个 boolean,指定 cookie 是否被标记为安全(true)或不是(false)。如果省略,默认为 false

storeId 可选

表示要在其中设置 cookie 的 cookie 存储 ID 的 string。如果省略,cookie 将在当前执行上下文的 cookie 存储中设置。

url

表示与 cookie 关联的请求 URI 的 string。此值可能会影响创建的 cookie 的默认域名和路径值。如果在 manifest 文件中未指定此 URL 的宿主权限,则方法调用将失败。

value 可选

表示 cookie 值的 string。如果省略,默认为空。

返回值

一个 Promise,当成功时,它会解析为一个 cookies.Cookie 对象,其中包含有关已设置 cookie 的详细信息。

如果一个 URL 有多个同名 cookie,则返回路径最长的 cookie。对于路径长度相同的 cookie,则返回创建时间最早的 cookie。

注意: 在 Firefox 133 之前,当存在多个同名 cookie 时,Firefox 返回创建时间最早的 cookie。

如果请求的 cookie 无效或调用因其他原因失败,则 Promise 将以错误消息拒绝。

注意: 在 Firefox 145 之前,会创建无效的 cookie。

示例

此示例为活动标签页托管的文档设置一个 cookie

js
let getActive = browser.tabs.query({ active: true, currentWindow: true });
getActive.then(setCookie);

function setCookie(tabs) {
  browser.cookies.set({
    url: tabs[0].url,
    name: "favorite-color",
    value: "red",
  });
}

扩展程序示例

浏览器兼容性

注意:此 API 基于 Chromium 的 chrome.cookies API。本文档摘自 Chromium 代码中的 cookies.json