cookies.get()

cookies API 的 get() 方法,在给定 cookie 的名称和 URL 的情况下,用于检索 cookie 的信息。

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

如果一个 URL 有多个同名 cookie,将返回路径最长的 cookie。对于路径长度相同的 cookie,将返回最早创建的 cookie。如果找不到匹配的 cookie,则返回 null

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

这是一个异步函数,返回一个 Promise

语法

js
let getting = browser.cookies.get(
  details                // object
)

参数

details

一个包含用于匹配要检索的 cookie 的详细信息的 object。它可以包含以下属性:

firstPartyDomain 可选

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

name

一个 string,表示要检索的 cookie 的名称。

partitionKey 可选

一个 object,表示 cookie 所在的 存储分区。包含此对象以及 topLevelSite 以从分区存储中获取 cookie。否则,将从非分区存储中返回 cookie。此对象包含:

topLevelSite 可选

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

storeId 可选

一个 string,表示要查找 cookie 的 cookie 存储的 ID(如 cookies.getAllCookieStores() 返回)。默认情况下,使用当前执行上下文的 cookie 存储。

url

一个 string,表示要检索的 cookie 所关联的 URL。此参数可以是完整 URL,在这种情况下,URL 路径之后的所有数据(例如查询字符串)将被忽略。如果在扩展的 manifest 文件中未为此 URL 指定 主机权限,则 API 调用会失败。

返回值

一个 Promise,该 Promise 将会以一个包含 cookie 详细信息的 Cookie 对象来 fulfilled,如果找不到 cookie,则以 null fulfilled。

示例

此示例尝试获取与活动标签页 URL 关联的名为 "favorite-color" 的 cookie。

js
function logCookie(cookie) {
  if (cookie) {
    console.log(cookie.value);
  }
}

function getCookie(tabs) {
  let getting = browser.cookies.get({
    url: tabs[0].url,
    name: "favorite-color",
  });
  getting.then(logCookie);
}

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

扩展程序示例

浏览器兼容性

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