browser.cookies

说明

使用 chrome.cookies API 查询和修改 Cookie,并在 Cookie 发生更改时收到通知。

权限

cookies

如需使用 Cookies API,请在清单中声明 "cookies" 权限,并为您要访问其 Cookie 的任何主机声明主机权限。例如:

{
  "name": "My extension",
  ...
  "host_permissions": [
    "*://*.google.com/"
  ],
  "permissions": [
    "cookies"
  ],
  ...
}

分区

分区 Cookie 允许网站标记应根据顶级框架的来源对某些 Cookie 进行键控。这意味着,例如,如果网站 A 使用 iframe 嵌入到网站 B 和网站 C 中,则来自 A 的分区 Cookie 的嵌入版本在 B 和 C 上可以具有不同的值。

默认情况下,所有 API 方法都对未分区 Cookie 进行操作。partitionKey 属性可用于替换此行为。

如需详细了解分区对扩展程序的一般影响,请参阅存储空间和 Cookie。

示例

您可以在 examples/api/cookies 目录中找到使用 cookies API 的简单示例。如需查看其他示例以及查看源代码方面的帮助,请参阅示例。

类型

表示 HTTP Cookie 的相关信息。

属性

  • 字符串

    Cookie 的网域(例如“www.google.com”“example.com”)。

  • number 可选

    Cookie 的失效日期,以自 UNIX 纪元以来的秒数表示。不适用于会话 Cookie。

  • 布尔值

    如果 Cookie 是仅限主机的 Cookie(即请求的主机必须与 Cookie 的网域完全匹配),则为 True。

  • 布尔值

    如果 Cookie 被标记为 HttpOnly(即客户端脚本无法访问该 Cookie),则为 True。

  • 字符串

    Cookie 的名称。

  • Chrome 119 及更高版本 browser.*(自 Chrome 148 起)

    用于读取或修改具有 Partitioned 属性的 Cookie 的分区键。

  • 字符串

    Cookie 的路径。

  • Chrome 51 及更高版本 browser.*(自 Chrome 148 起)

    Cookie 的同站状态(即 Cookie 是否会随跨站请求一起发送)。

  • 布尔值

    如果 Cookie 被标记为“安全”(即其范围仅限于安全信道,通常为 HTTPS),则为 True。

  • 布尔值

    如果 Cookie 是会话 Cookie(而非具有失效日期的永久性 Cookie),则为 True。

  • 字符串

    包含此 Cookie 的 Cookie 存储区的 ID,如 getAllCookieStores() 中所示。

  • 字符串

    Cookie 的值。

CookieDetails

Chrome 88 及更高版本 browser.*(自 Chrome 148 起)

用于识别 Cookie 的详细信息。

属性

  • name

    字符串

    要访问的 Cookie 的名称。

  • partitionKey
    Chrome 119 及更高版本 browser.*(自 Chrome 148 起)

    用于读取或修改具有 Partitioned 属性的 Cookie 的分区键。

  • storeId

    字符串 可选

    要在其中查找 Cookie 的 Cookie 存储区的 ID。默认情况下,系统会使用当前执行上下文的 Cookie 存储区。

  • 网址

    字符串

    要访问的 Cookie 所关联的网址。此参数可以是完整网址,在这种情况下,网址路径后面的任何数据(例如查询字符串)都会被忽略。如果清单文件中未指定此网址的主机权限,API 调用将失败。

CookiePartitionKey

Chrome 119 及更高版本 browser.*(自 Chrome 148 起)

表示分区 Cookie 的分区键。

属性

  • hasCrossSiteAncestor

    布尔值 (可选)

    Chrome 130 及更高版本 browser.*(自 Chrome 148 起)

    指明 Cookie 是否是在跨网站上下文中设置的。这样可以防止嵌入在跨网站上下文中的顶级网站访问顶级网站在同网站上下文中设置的 Cookie。

  • topLevelSite

    字符串 可选

    分区 Cookie 所在的顶级网站。

CookieStore

表示浏览器中的 Cookie 存储区。例如,无痕式窗口使用的 Cookie 存储区与非无痕模式窗口不同。

属性

  • id

    字符串

    Cookie 存储区的唯一标识符。

  • tabIds

    number[]

    共享此 Cookie 存储区的所有浏览器标签页的标识符。

FrameDetails

Chrome 132+ browser.*(自 Chrome 148 起)

用于识别框架的详细信息。

属性

  • documentId

    字符串 可选

    文档的唯一标识符。如果提供了 frameId 和/或 tabId,系统会验证它们是否与通过提供的文档 ID 找到的文档匹配。

  • frameId

    number 可选

    标签页中框架的唯一标识符。

  • tabId

    number 可选

    包含框架的标签页的唯一标识符。

OnChangedCause

Chrome 44 及更高版本 browser.*(自 Chrome 148 起)

Cookie 发生变化的根本原因。如果 Cookie 是通过显式调用“chrome.cookies.remove”插入或移除的,则“cause”将为“explicit”。如果 Cookie 因过期而被自动移除,则“cause”将为“expired”。如果 Cookie 是因被已过期的失效日期覆盖而被移除,则“cause”将设置为“expired_overwrite”。如果 Cookie 因垃圾回收而被自动移除,则“cause”将为“evicted”。如果 Cookie 是因“set”调用覆盖而自动移除的,则“cause”将为“overwrite”。请据此规划您的应对措施。

枚举

"evicted"

"expired"

"explicit"

"expired_overwrite"

"overwrite"

SameSiteStatus

Chrome 51 及更高版本 browser.*(自 Chrome 148 起)

Cookie 的“SameSite”状态 (https://tools.ietf.org/html/draft-west-first-party-cookies)。“no_restriction”对应于设置为“SameSite=None”的 Cookie,“lax”对应于“SameSite=Lax”,“strict”对应于“SameSite=Strict”。“unspecified”对应于未设置 SameSite 属性的 Cookie。

枚举

"no_restriction"

"lax"

"strict"

"unspecified"

方法

get()

browser.cookies.get(
  details: CookieDetails,
)
: Promise<Cookie | undefined>

检索单个 Cookie 的相关信息。如果给定网址存在多个同名 Cookie,系统将返回路径最长的 Cookie。对于路径长度相同的 Cookie,系统会返回创建时间最早的 Cookie。

参数

返回

  • Promise<Cookie | undefined>

    Chrome 88 及更高版本 browser.*(自 Chrome 148 起)

getAll()

browser.cookies.getAll(
  details: object,
)
: Promise<Cookie[]>

从单个 Cookie 存储区检索与给定信息匹配的所有 Cookie。返回的 Cookie 将进行排序,路径最长的 Cookie 排在最前面。如果多个 Cookie 的路径长度相同,则创建时间最早的 Cookie 将排在最前面。此方法仅检索扩展程序拥有主机权限的网域的 Cookie。

参数

  • 详细信息

    对象

    用于过滤要检索的 Cookie 的信息。

    • 网域

      字符串 可选

      将检索到的 Cookie 限制为网域与此网域匹配或为此网域的子网域的 Cookie。

    • name

      字符串 可选

      按名称过滤 Cookie。

    • partitionKey
      Chrome 119 及更高版本 browser.*(自 Chrome 148 起)

      用于读取或修改具有 Partitioned 属性的 Cookie 的分区键。

    • 路径

      字符串 可选

      将检索到的 Cookie 限制为路径与此字符串完全匹配的 Cookie。

    • 安全

      布尔值 (可选)

      按 Cookie 的 Secure 属性过滤 Cookie。

    • session

      布尔值 (可选)

      滤除会话 Cookie 与永久性 Cookie。

    • storeId

      字符串 可选

      要从中检索 Cookie 的 Cookie 存储区。如果省略,系统将使用当前执行上下文的 Cookie 存储区。

    • 网址

      字符串 可选

      将检索到的 Cookie 限制为与给定网址匹配的 Cookie。

返回

  • <Cookie[]>

    Chrome 88 及更高版本 browser.*(自 Chrome 148 起)

getAllCookieStores()

browser.cookies.getAllCookieStores(): Promise<CookieStore[]>

列出所有现有的 Cookie 存储区。

返回

  • Chrome 88 及更高版本 browser.*(自 Chrome 148 起)

getPartitionKey()

Chrome 132+ browser.*(自 Chrome 148 起)
browser.cookies.getPartitionKey(
  details: FrameDetails,
)
: Promise<object>

所指示帧的分区键。

参数

返回

  • Promise<object>

remove()

browser.cookies.remove(
  details: CookieDetails,
)
: Promise<object | undefined>

按名称删除 Cookie。

参数

返回

  • Promise<object | undefined>

    Chrome 88 及更高版本 browser.*(自 Chrome 148 起)

set()

browser.cookies.set(
  details: object,
)
: Promise<Cookie | undefined>

利用给定 Cookie 数据设置 Cookie;如果存在等效 Cookie,则可能会覆盖它们。

参数

  • 详细信息

    对象

    所设置 Cookie 的详细信息。

    • 网域

      字符串 可选

      Cookie 的网域。如果省略,则 Cookie 会成为仅限主机的 Cookie。

    • expirationDate

      number 可选

      Cookie 的失效日期,以自 UNIX 纪元以来的秒数表示。如果省略,Cookie 将变为会话 Cookie。

    • httpOnly

      布尔值 (可选)

      是否应将 Cookie 标记为 HttpOnly。默认值为 false。

    • name

      字符串 可选

      Cookie 的名称。如果省略,则默认为空。

    • partitionKey
      Chrome 119 及更高版本 browser.*(自 Chrome 148 起)

      用于读取或修改具有 Partitioned 属性的 Cookie 的分区键。

    • 路径

      字符串 可选

      Cookie 的路径。默认为 url 网址参数的路径部分。

    • sameSite
      Chrome 51 及更高版本 browser.*(自 Chrome 148 起)

      Cookie 的同网站状态。默认值为“unspecified”,即如果省略,则在设置 Cookie 时不指定 SameSite 属性。

    • 安全

      布尔值 (可选)

      是否应将 Cookie 标记为安全。默认值为 false。

    • storeId

      字符串 可选

      要在其中设置 Cookie 的 Cookie 存储区的 ID。默认情况下,Cookie 会在当前执行上下文的 Cookie 存储区中设置。

    • 网址

      字符串

      要与 Cookie 设置相关联的请求 URI。此值可能会影响所创建 Cookie 的默认网域和路径值。如果清单文件中未指定此网址的主机权限,API 调用将失败。

    • 值

      字符串 可选

      Cookie 的值。如果省略,则默认为空。

返回

  • Promise<Cookie | undefined>

    Chrome 88 及更高版本 browser.*(自 Chrome 148 起)

事件

onChanged

browser.cookies.onChanged.addListener(
  callback: function,
)

在设置或移除 Cookie 时触发。作为一种特殊情况,请注意,更新 Cookie 的属性分两步实现:首先完全移除要更新的 Cookie,生成“cause”为“overwrite”的通知。之后,系统会写入一个包含更新值的新 Cookie,从而生成第二个通知,其“cause”为“explicit”。

参数

  • callback

    函数

    callback 参数如下所示:

    (changeInfo: object) => void

    • changeInfo

      对象

      • Cookie 发生变化的根本原因。

      • 与已设置或已移除的 Cookie 相关的信息。

      • 已移除

        布尔值

        如果移除了 Cookie,则为 True。