Cookie 存储 API

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中。

注意:此功能在Service Workers中可用。

Cookie 存储 API是一个用于管理 cookie 的异步 API,可在窗口和服务工作线程中使用。

概念和用法

获取和设置 cookie 的现有方法涉及使用document.cookie作为键/值对字符串。除了这种方法笨拙且容易出错之外,它还在现代 Web 开发的上下文中存在许多问题。

document.cookie接口是同步的、单线程的和阻塞的。写入 cookie 时,必须等待浏览器更新所有 cookie 的字符串。此外,对document的依赖意味着服务工作线程无法访问 cookie,因为它们无法访问document对象。

Cookie 存储 API提供了一种更新的管理 cookie 的方法。它是异步的且基于 Promise 的,因此不会阻塞事件循环。它不依赖于document,因此服务工作线程也可以使用它。获取和设置 cookie 的方法还通过错误消息提供更多反馈。这意味着 Web 开发人员不必立即设置然后读取回 cookie 以检查设置是否成功。

接口

CookieStore 实验性

CookieStore接口允许获取和设置 cookie。

CookieStoreManager 实验性

CookieStoreManager接口为服务工作线程注册提供服务,使服务工作线程能够订阅 cookie 更改事件。

CookieChangeEvent 实验性

当任何脚本可见的 cookie 发生更改时,名为changeCookieChangeEvent会在Window上下文中针对CookieStore对象分派。

ExtendableCookieChangeEvent

当任何脚本可见的 cookie 发生更改且与服务工作线程的 cookie 更改订阅列表匹配时,名为cookiechangeExtendableCookieChangeEvent会在ServiceWorkerGlobalScope上下文中分派。

扩展到其他接口

ServiceWorkerGlobalScope.cookieStore 只读 实验性

返回与服务工作线程关联的CookieStore对象的引用。

ServiceWorkerRegistration.cookies 只读 实验性

返回CookieStoreManager接口的引用,该接口使 Web 应用程序能够订阅和取消订阅 cookie 更改事件。

Window.cookieStore 只读 实验性

返回当前文档上下文的CookieStore对象的引用。

cookiechange 事件 实验性

当发生任何与服务工作线程的 cookie 更改订阅列表匹配的 cookie 更改时触发。

规范

规范
Cookie 存储 API

浏览器兼容性

api.CookieStore

BCD 表仅在启用 JavaScript 的浏览器中加载。

api.CookieStoreManager

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅