cookies.set()

cookies API 的 set() 方法设置包含指定 cookie 数据的 cookie。此方法相当于在请求给定 URL 时发出 HTTP Set-cookie 标头。

只有在你的 manifest.json 文件中包含“cookies” API 权限以及给定 URL 的主机权限时,调用才会成功。给定的 URL 也需要必要的权限来创建具有给定参数的 cookie。

这是一个返回 Promise 的异步函数。

语法

js
let setting = browser.cookies.set(
  details, // 对象
);

参数

details

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

domain 可选

一个表示 cookie 域的 string。如果省略,cookie 将成为仅限主机(host-only)的 cookie。

expirationDate 可选

一个表示 cookie 过期日期的 number,以 UNIX 纪元以来的秒数表示。如果省略,cookie 将成为会话 cookie。

firstPartyDomain 可选

一个表示 cookie 将关联的第一方域的 string。如果浏览器启用了第一方隔离,则必须提供此属性。参见第一方隔离

httpOnly 可选

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

name 可选

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

partitionKey 可选

一个表示存储分区的 object,用于在分区存储中设置 cookie。包含此对象以在分区存储中设置 cookie。该对象包含:

topLevelSite 可选

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

path 可选

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

sameSite 可选

一个 cookies.SameSiteStatus 值,指示 cookie 的 SameSite 状态。如果省略,默认为 0,即“no_restriction”。

secure 可选

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

storeId 可选

一个表示要在其中设置 cookie 的 cookie 存储区 ID 的 string。如果省略,默认情况下 cookie 设置在当前执行上下文的 cookie 存储区中。

url

一个表示与 cookie 关联的请求 URI 的 string。此值可以影响创建的 cookie 的默认域和值路径。如果清单(manifest)文件中未指定此 URL 的主机权限,则方法调用将失败。

value 可选

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

返回值

一个 Promise,它会兑现一个包含已设置 cookie 详细信息的 cookies.Cookie 对象。如果由于任何原因调用失败,Promise 会以错误消息拒绝。

浏览器兼容性

BCD tables only load in the browser

示例

此示例为当前活动标签页托管的文档设置一个 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