帮你快速理解、总结文档立即下载

Cookies

最近更新时间:2026-11-02 10:33:08
本文档已由 AI 辅助审校
我的收藏
Cookies 提供了一组 cookie 操作接口。
注意:
Cookies 对象以 name + domain + path 为唯一 key, 管理 Cookie 对象集。

构造函数

new Cookies(cookieStr?: string, isSetCookie?: boolean): Cookies;

参数

参数名称
类型
必填
说明
cookieStr
string
否
Cookie 字符串或者 Set-Cookie 字符串。
isSetCookie
boolean
否
参数 cookieStr 是否是 Set-Cookie 字符串,默认为 false。

方法

get

cookies.get(name?: string): null | Cookie | Array<Cookie>;
获取指定名称的 Cookie 对象。存在多个 name 匹配时,返回 Cookie 数组。

参数

参数名称
类型
必填
说明
name
string
否
Cookie名称,取值说明如下。
缺省 name
表示获取所有 Cookie 对象。
指定 name
表示获取指定 name 的 Cookie 对象,存在多个匹配时,返回 Cookie 数组。
Cookie 对象属性如下,详细参见 MDN 官方文档 Set-Cookie。
属性名
类型
只读
说明
name
string
是
Cookie 名称。
value
string
是
Cookie 值。
domain
string
是
Cookie的作用域名。
path
string
是
Cookie的作用路径。
expires
string
是
Cookie 最长有效时间, 取值符合 HTTP Date 首部标准。
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;
覆盖添加 Cookie。返回 true,表示添加成功,返回 false,表示添加失败(超过了 cookies 数量限制,详情参见 cookies 大小限制)。
注意
以 name + domain + path 为唯一 key,覆盖添加 Cookie。

参数

参数名称
类型
必填
说明
name
string
是
Cookie名称。
value
string
是
Cookie值。
options
Cookie
否
Cookie 属性配置项。

append

cookies.append(name: string, value: string, options?: Cookie): boolean;
追加 Cookie,用于相同 name, 多个 value 的场景。返回 true,表示添加成功,返回 false,表示添加失败(value 重复或超过了 cookies 数量限制,详情请参见 cookies 大小限制)。
注意
以 name + domain + path 为唯一 key 追加 Cookie。

参数

参数名称
类型
必填
说明
name
string
是
Cookie名称。
value
string
是
Cookie值。
options
Cookie
否
Cookie 属性配置项。

remove

cookies.remove(name: string, options?: Cookie): boolean;
删除 Cookie。
注意
以 name + domain + path 为唯一 key 删除 Cookie。

参数

参数名称
类型
必填
说明
name
string
是
Cookie名称。
options
否
Cookie 属性配置项,其中属性 domain 和 path 可支持 *, 表示匹配所有。

使用限制

特殊字符自动转义

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 request = event.request;

// 解析 Cookie 请求头(非法片段自动忽略)
const cookies = new Cookies(request.headers.get('Cookie') || '');

// 读取登录态标记 cookie
// get 可能返回 null / 单个 Cookie / Cookie 数组(同名重复)
const loginState = cookies.get('login_state');
const loggedIn = loginState !== null &&
!Array.isArray(loginState) &&
loginState.value === '1';

if (!loggedIn) {
// 未登录:重定向到登录页,携带回跳地址
const backUrl = encodeURIComponent(request.url);
return event.respondWith(Response.redirect(`https://www.example.com/login?back_url=${backUrl}`, 302));
}

// 已登录:放行回源
return;
}

相关参考