CookieStore: getAll() 方法
注意:此功能在 Service Workers 中可用。
CookieStore 接口的 getAll() 方法返回一个 Promise,该 Promise 解析为一个匹配传递给它的 name 或 options 的 cookie 数组。不传递任何参数将返回当前上下文的所有 cookie。
语法
getAll()
getAll(name)
getAll(options)
参数
name可选-
一个包含 cookie 名称的字符串。
或者
options可选-
一个包含以下内容的 Shoppee 对象:
注意:url 选项允许修改特定 URL 下的 cookie。Service worker 可以获取将发送到其作用域下的任何 URL 的 cookie。从文档中,您只能获取当前 URL 的 cookie,因此在文档上下文中唯一的有效 URL 是文档的 URL。
返回值
一个 Promise,它会解析为一个对象数组,代表与给定 name 或 options 匹配的 cookie。
每个对象包含以下属性:
域-
包含 cookie 域名的字符串。
expires-
一个时间戳,以 Unix 时间(毫秒)给出,包含 cookie 的过期日期。
name-
包含 cookie 名称的字符串。
partitioned-
一个布尔值,指示 cookie 是否为分区 cookie(
true)或不是(false)。有关更多信息,请参阅 具有独立分区状态的 Cookie (CHIPS)。 路径-
包含 cookie 路径的字符串。
sameSitesecure-
一个布尔值,指示 cookie 是否仅用于安全上下文(
true)或不用于(false)。 value-
包含 cookie 值的字符串。
异常
SecurityErrorDOMException-
如果源无法 序列化 为 URL,则抛出此异常。
TypeError-
在以下情况下抛出
- 该方法在主线程中调用,并且指定了
url选项,但该选项与当前窗口的 URL 不匹配。 - 该方法在 worker 中调用,并且指定了
url选项,但该选项与 worker 的源不匹配。 - 查询由给定
name或options表示的 cookie 失败。
- 该方法在主线程中调用,并且指定了
示例
获取此上下文的所有 cookie
此示例展示了如何获取当前上下文中的所有 cookie。
首先,我们定义 setTestCookies(),它创建测试 cookie "cookie1" 和 "cookie2",并记录任何错误。
async function setTestCookies() {
// Set two cookies
try {
await cookieStore.set("cookie1", "cookie1-value");
} catch (error) {
console.log(`Error setting cookie1: ${error}`);
}
try {
await cookieStore.set("cookie2", "cookie2-value");
} catch (error) {
console.log(`Error setting cookie2: ${error}`);
}
}
cookieTest() 方法调用 setTestCookies(),然后等待 getAll()。这将返回一个 Promise,该 Promise 解析为当前上下文的所有 cookie,表示为一个对象数组,如果没有 cookie 则返回一个空数组。如果返回的 Promise 解析为一个包含 cookie 信息的数组,我们会遍历该数组并记录每个 cookie("cookie1" 和 "cookie2")。
async function cookieTest() {
// Set our test cookies
await setTestCookies();
// Get all cookies
const cookies = await cookieStore.getAll();
// Iterate the cookies, or log that none were found
if (cookies.length > 0) {
console.log(`Found cookies: ${cookies.length}:`);
cookies.forEach((cookie) => console.log(cookie));
} else {
console.log("Cookies not found");
}
}
规范
| 规范 |
|---|
| Cookie Store API # dom-cookiestore-getall |
浏览器兼容性
加载中…