cookies
cookies
函数允许你在 服务器组件 中读取 HTTP 传入请求的 cookie,或在 服务器操作 或 路由处理程序 中写入传出请求的 cookie。
值得注意的是:
cookies()
是一个 动态函数,其返回值无法提前知晓。在布局或页面中使用它将使路由在请求时进入 动态渲染。
cookies().get(name)
这是一个方法,接受一个 cookie 名称并返回一个包含 name 和 value 的对象。如果没有找到名为 name
的 cookie,它将返回 undefined
。如果有多个匹配的 cookie,它只会返回第一个匹配项。
cookies().getAll()
这个方法类似于 get
,但会返回所有匹配 name
的 cookie 列表。如果未指定 name
,它将返回所有可用的 cookie。
cookies().has(name)
这个方法接受一个 cookie 名称,并根据该 cookie 是否存在返回一个布尔值 (存在则为 true
,不存在则为 false
)。
cookies().set(name, value, options)
这个方法接受一个 cookie 名称、值和选项,并设置传出请求的 cookie。
值得注意的是:HTTP 不允许在流式传输开始后设置 cookie,所以你必须在 服务器操作 或 路由处理程序 中使用
.set()
。
删除 cookie
删除 cookie 有几种选择:
cookies().delete(name)
你可以显式删除具有给定名称的 cookie。
cookies().set(name, '')
另外,你可以设置一个具有相同名称但值为空的新 cookie。
cookies().set(name, value, { maxAge: 0 })
将 maxAge
设置为 0 将立即使 cookie 过期。maxAge
接受以秒为单位的值。
cookies().set(name, value, { expires: timestamp })
将 expires
设置为过去的任何值将立即使 cookie 过期。
值得注意的是:你只能删除属于调用
.set()
的同一域的 cookie。此外,代码必须在与你想要删除的 cookie 相同的协议 (HTTP 或 HTTPS) 上执行。
版本历史
版本 | 变更 |
---|---|
v13.0.0 | 引入 cookies 函数。 |