更新时间:2024-08-14 19:50:30
Cookies
对象提供了一组用于操作 HTTP Cookie 的接口。它以 name
+ domain
+ path
作为唯一键来管理 Cookie 对象集,并提供添加、获取、删除 Cookie 等功能。
const cookies = new Cookies(cookieStr?, isSetCookie?);
参数:
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
cookieStr |
string |
否 | Cookie 字符串或 Set-Cookie 字符串。 |
isSetCookie |
boolean |
否 | 指示 cookieStr 参数是否为 Set-Cookie 字符串。默认为 false 。 |
cookies.get(name?): null | Cookie | Array<Cookie>;
获取指定名称的 Cookie 对象。如果存在多个匹配的 name
,则返回一个 Cookie 对象数组。
参数:
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
name |
string |
否 | Cookie 名称。如果省略 name 参数,则返回所有 Cookie 对象;如果指定 name 参数,则返回匹配的 Cookie 对象或数组。 |
Cookie
对象表示一个 HTTP Cookie,其属性与 Set-Cookie
HTTP 头部字段定义的属性一致。 以下列出了 Cookie
对象的属性,更多详细信息请参考 MDN Set-Cookie 文档:
属性名 | 类型 | 只读 | 说明 |
---|---|---|---|
name |
string |
是 | Cookie 名称。 |
value |
string |
是 | Cookie 值。 |
domain |
string |
是 | Cookie 的作用域名。 |
path |
string |
是 | Cookie 的作用路径。 |
expires |
string |
是 | Cookie 的过期时间,取值符合 HTTP Date 首部标准。 |
maxAge |
number |
是 | Cookie 的最大生存时间(以秒为单位)。 |
sameSite |
string |
是 | 控制 Cookie 跨站请求伪造攻击 (CSRF) 的保护机制。 |
httpOnly |
boolean |
是 | 禁止 JavaScript 访问 Cookie,仅限 HTTP 请求携带。 |
secure |
boolean |
是 | Cookie 仅限 HTTPS 请求协议携带。 |
cookies.set(name: string, value: string, options?: Cookie): boolean;
覆盖添加 Cookie。如果添加成功,则返回 true
;如果添加失败(例如超过了 Cookie 数量限制),则返回 false
。
注意: 以 name
+ domain
+ path
为唯一键,覆盖添加 Cookie。
参数:
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
name |
string |
是 | Cookie 名称。 |
value |
string |
是 | Cookie 值。 |
options |
Cookie |
否 | 可选的 Cookie 属性配置项。 |
cookies.append(name: string, value: string, options?: Cookie): boolean;
追加 Cookie,适用于相同 name
、多个 value
的场景。如果添加成功,则返回 true
;如果添加失败(例如 value
重复或超过了 Cookie 数量限制),则返回 false
。
注意: 以 name
+ domain
+ path
为唯一键,追加 Cookie。
cookies.remove(name: string, options?: Cookie): boolean;
删除 Cookie。
注意: 以 name
+ domain
+ path
为唯一键,删除 Cookie。
参数:
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
name |
string |
是 | Cookie 名称。 |
options |
Cookie |
否 | 可选的 Cookie 属性配置项,其中 domain 和 path 属性可以支持通配符 * ,表示匹配所有。 |
name
值中包含以下字符会被自动转义: " ( ) , / : ; < = > ? @ [ ] \ { }
、0x00~0x1F
、 0x7F~0xFF
。value
值中包含以下字符会被自动转义: ,
、;
、"
、\
、0x00~0x1F
、0x7F~0xFF
。name
的大小不超过 64 字节。value
、domain
、path
、expires
、maxAge
、sameSite
的累计大小不超过 1KB。function handleEvent(event) {
const response = new Response('hello world');
// 创建 Cookies 对象
const cookies = new Cookies('ssid=helloworld; expires=Sun, 10-Dec-2023 03:10:01 GMT; path=/; domain=.example.com; samesite=.example.com', true);
// 设置响应头 Set-Cookie
response.headers.set('Set-Cookie', cookies.toString());
return response;
}
addEventListener('fetch', (event) => {
event.respondWith(handleEvent(event));
});