用户可借助此项目生成和解析 HTTP 响应头中的 Cookie 字符串。它提供 bake_cookie 和 crush_cookie 核心函数,支持多种 Cookie 属性设置,优先使用 XS 实现提升性能,纯 Perl 实现作为 fallback。【此简介由AI生成】
名称
Cookie::Baker - Cookie 字符串生成器/解析器
概要
使用 Cookie::Baker;
$headers->push_header('Set-Cookie', bake_cookie($key,$val));
my $cookies_hashref = crush_cookie($headers->header('Cookie'));
描述
Cookie::Baker 提供简单的 Cookie 字符串生成与解析功能。
XS 实现
本模块默认尝试使用 Cookie::Baker::XS 的 crush_cookie 方法。 若失败,则回退到 Cookie::Baker 的纯 Perl 版 crush_cookie。
目前尚未实现 bake_cookie 的 XS 版本。
函数
-
bake_cookie
my $cookie = bake_cookie('foo','val'); my $cookie = bake_cookie('foo', { value => 'val', path => "test", domain => '.example.com', expires => '+24h' } );生成用于 HTTP 响应头的 Cookie 字符串。 第一个参数为 Cookie 名称,第二个参数可以是纯字符串或包含以下键的哈希引用:
value、domain、expires、path、httponly、secure、max-age、samesite。-
value
Cookie 值。
-
domain
Cookie 域名。
-
expires
Cookie 过期时间。支持多种格式:
expires => time + 24 * 60 * 60 # 时间戳 expires => 'Wed, 03-Nov-2010 20:54:16 GMT' expires => '+30s' # 当前时间30秒后 expires => '+10m' # 十分钟后 expires => '+1h' # 一小时后 expires => '-1d' # 昨天(即"立即过期") expires => '+3M' # 三个月后 expires => '+10y' # 十年后(60*60*24*365*10秒) expires => 'now' # 立即 -
max-age
若定义,则设置 Cookie 的 max-age 属性。
-
path
Cookie 路径。
-
httponly
为真时设置 HttpOnly 标记,默认为假。
-
secure
为真时设置 secure 标记,默认为假。
-
samesite
当定义为 'lax'、'strict' 或 'none'(不区分大小写)时,按照 草案提案设置 SameSite 限制, 该特性已在 Chrome (v51)、Safari (v12)、Edge (v16)、Opera (v38) 和 Firefox (v60) 中实现。
-
-
crush_cookie
解析 Cookie 字符串并返回哈希引用。
my $cookies_hashref = crush_cookie($headers->header('Cookie')); my $cookie_value = $cookies_hashref->{cookie_name}
相关模块
CPAN 已有多个 Cookie 相关模块,但缺乏简单的 Cookie 字符串生成与解析模块。
CGI, CGI::Simple, Plack, Dancer::Cookie
许可证
版权所有 (C) Masahiro Nagano。
本库为自由软件,您可依据与 Perl 相同的条款进行修改和再发布。
作者
Masahiro Nagano kazeburo@gmail.com