cookies
cookies
函数允许您从 服务端组件 (Server Component) 读取 HTTP 传入请求的 cookies,或在 服务端操作 (Server Action) 或 路由处理器 (Route Handler) 中设置传出请求的 cookies。
须知:
cookies()
是一个 动态函数 (Dynamic Function),其返回值无法提前预知。在布局或页面中使用它将使路由在请求时启用 动态渲染 (dynamic rendering)。
cookies().get(name)
该方法接收一个 cookie 名称,返回包含名称和值的对象。如果未找到对应名称的 cookie,则返回 undefined
。如果存在多个匹配的 cookie,仅返回第一个匹配项。
cookies().getAll()
该方法与 get
类似,但返回所有匹配名称的 cookies 列表。如果未指定名称,则返回所有可用 cookies。
cookies().has(name)
该方法接收一个 cookie 名称,根据 cookie 是否存在返回 boolean
值(存在为 true
,不存在为 false
)。
cookies().set(name, value, options)
该方法接收 cookie 名称、值和选项,用于设置传出请求的 cookie。
须知:HTTP 不允许在流式传输开始后设置 cookies,因此必须在 服务端操作 (Server Action) 或 路由处理器 (Route Handler) 中使用
.set()
。
删除 cookies
须知:只能在 服务端操作 (Server Action) 或 路由处理器 (Route Handler) 中删除 cookies。
删除 cookie 有以下几种方式:
cookies().delete(name)
可以通过指定名称显式删除 cookie。
cookies().set(name, '')
也可以设置一个同名但值为空的 cookie。
须知:
.set()
仅在 服务端操作 (Server Action) 或 路由处理器 (Route Handler) 中可用。
cookies().set(name, value, { maxAge: 0 })
将 maxAge
设置为 0 会使 cookie 立即过期。
cookies().set(name, value, { expires: timestamp })
将 expires
设置为过去的任意时间戳会使 cookie 立即过期。
须知:只能删除与调用
.set()
的域相同的 cookies。此外,代码必须在与要删除的 cookie 相同的协议(HTTP 或 HTTPS)上执行。
版本历史
版本 | 变更 |
---|---|
v13.0.0 | 引入 cookies 函数。 |