Cookies
Cookies 提供了一组 cookie 操作接口。
注意:
Cookies 对象以
name + domain + path
为唯一 key, 管理 Cookie 对象集。构造函数
const cookies = new Cookies(cookieStr?: string, isSetCookie?: boolean);
参数
参数名称 | 类型 | 必填 | 说明 |
cookieStr | string | 否 | |
isSetCookie | boolean | 否 |
方法
get
cookies.get(name?: string): null | Cookie | Array<Cookie>;
参数
参数名称 | 类型 | 必填 | 说明 |
name | string | 否 | Cookie 名称,取值说明如下。 缺省 name 表示获取所有 Cookie 对象。 指定 name |
Cookie
属性名 | 类型 | 只读 | 说明 |
name | string | 是 | Cookie 名称。 |
value | string | 是 | Cookie 值。 |
domain | string | 是 | Cookie 的作用域名。 |
path | string | 是 | Cookie 的作用路径。 |
expires | string | 是 | |
max_age | string | 是 | Cookie 经过 max_age 秒失效,单位秒(s)。 |
samesite | string | 是 | 控制 Cookie 跨站点请求伪造攻击(CSRF)的保护。 |
httponly | boolean | 是 | 禁止 JavaScript 访问 Cookie,仅限 HTTP 请求携带。 |
secure | boolean | 是 | Cookie 仅限 HTTPS 请求协议携带。 |
set
cookies.set(name: string, value: string, options?: Cookie): boolean;
注意:
以
name + domain + path
为唯一 key,覆盖添加 Cookie。参数
参数名称 | 类型 | 必填 | 说明 |
name | string | 是 | Cookie 名称。 |
value | string | 是 | Cookie 值。 |
Cookie | string | 否 |
append
cookies.append(name: string, value: string, options?: Cookie): boolean;
追加 Cookie,用于相同 name, 多个 value 的场景。返回 true,表示添加成功,返回 false,表示添加失败(value 重复或超过了 cookies 数量限制,详细参见 cookies 大小限制)。
注意:
以
name + domain + path
为唯一 key 追加 Cookie。remove
cookies.remove(name: string, options?: Cookie): boolean;
删除 Cookie。
注意:
以
name + domain + path
为唯一 key 删除 Cookie。参数
使用限制
特殊字符自动转义
name 值包含字符
" ( ) , / : ; ? < = > ? @ [ ] \ { }
,0x00~0x1F
, 0x7F~0xFF
将被自动转义。value 值包含字符
, , ; " \
,0x00~0x1F
,0x7F~0xFF
将被自动转义。cookies 大小限制
Cookie 属性 name 大小不超过 64B。
Cookie 属性
value, domain, path, expires, max_age, samesite
累计大小不超过 1KB。cookies 转义后所有字段总长度不超过 4KB。
cookies 中包含的 Cookie 对象总数不超过 64个。
示例代码
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=.tencentcloud.com; samesite=.tencentcloud.com', true);// 设置响应头 Set-Cookieresponse.setCookies(cookies);return response;}addEventListener('fetch', (event) => {event.respondWith(handleEvent(event));});