Cookie 存储 API
注意:此功能在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
接口允许获取和设置 cookie。 -
CookieStoreManager
接口为服务工作线程注册提供服务,使服务工作线程能够订阅 cookie 更改事件。 -
当任何脚本可见的 cookie 发生更改时,名为
change
的CookieChangeEvent
会在Window
上下文中针对CookieStore
对象分派。 -
当任何脚本可见的 cookie 发生更改且与服务工作线程的 cookie 更改订阅列表匹配时,名为
cookiechange
的ExtendableCookieChangeEvent
会在ServiceWorkerGlobalScope
上下文中分派。
扩展到其他接口
-
返回与服务工作线程关联的
CookieStore
对象的引用。 -
返回
CookieStoreManager
接口的引用,该接口使 Web 应用程序能够订阅和取消订阅 cookie 更改事件。 -
返回当前文档上下文的
CookieStore
对象的引用。 -
当发生任何与服务工作线程的 cookie 更改订阅列表匹配的 cookie 更改时触发。
规范
规范 |
---|
Cookie 存储 API |
浏览器兼容性
api.CookieStore
BCD 表仅在启用 JavaScript 的浏览器中加载。
api.CookieStoreManager
BCD 表仅在启用 JavaScript 的浏览器中加载。