Skip to main content

Module cookie

Module cookie 

Source
Expand description

Cookie 模块 — 对齐 PHP think\Cookie

本模块实现 Cookie 管理,对齐 PHP think\Cookie 的核心 API。

§PHP 对齐

§核心 API 映射

PHP 方法Rust 方法说明
Cookie::set($name, $value, $option)CookieJar::set设置 cookie(暂存到 jar,等 save 时统一发送)
Cookie::get($name, $default)CookieJar::get / CookieJar::get_with_default从 Request 读取 cookie
Cookie::has($name)CookieJar::has检查 Request 中是否存在 cookie
Cookie::delete($name, $options)CookieJar::delete删除 cookie(设置过期时间为过去)
Cookie::forever($name, $value, $option)CookieJar::forever永久保存(10 年)
Cookie::save()CookieJar::apply_to_response将所有暂存的 cookie 写入 Response 的 Set-Cookie 头

§PHP 行为对齐

  • 延迟发送:PHP set() 仅暂存到 $this->cookie 数组,save() 时统一发送 Set-Cookie 头。Rust 通过 CookieJar::set 暂存到内部 Vec, CookieJar::apply_to_response 时统一写入 Response。
  • 配置覆盖:PHP set()$option 参数会覆盖默认配置。Rust 通过 CookieOptions 实现相同行为。
  • 永久 Cookie:PHP forever() 设置 315360000 秒(10 年)过期。 Rust 使用相同常量。
  • 删除 Cookie:PHP delete() 通过设置过期时间为 time() - 3600 实现。 Rust 使用相同策略(expire 设为 -3600)。

§架构说明

本模块不依赖外部 cookie crate,直接基于 axum::http::HeaderMap 操作 CookieSet-Cookie 头,保持依赖最小化。

  • 请求头Cookie: name1=value1; name2=value2
  • 响应头Set-Cookie: name=value; Expires=...; Path=/; Domain=...; Secure; HttpOnly; SameSite=Lax

Structs§

CookieEntry
单个 Cookie 条目(暂存在 CookieJar 中,等待 apply_to_response 发送)
CookieJar
Cookie 管理器(对齐 PHP think\Cookie
CookieOptions
Cookie 配置选项(对齐 PHP think\Cookie::$config