用户可借助该项目实现 HTTP 客户端的 Cookie 管理功能,它是一个符合 RFC 6265 标准的极简 Cookie jar 模块,支持添加、清除、获取 Cookie 等操作,能有效处理 Cookie 存储与检索。【此简介由AI生成】
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 |
NAME HTTP::CookieJar - 一个极简的HTTP用户代理Cookie存储罐
VERSION 版本 0.012
SYNOPSIS use HTTP::CookieJar;
my $jar = HTTP::CookieJar->new;
# 添加从请求接收到的Cookie
$jar->add( "http://www.example.com/", "CUSTOMER=WILE_E_COYOTE; Path=/; Domain=example.com" );
# 提取指定请求的Cookie头信息
my $cookie = $jar->cookie_header( "http://www.example.com/" );
DESCRIPTION 本模块实现了一个符合RFC 6265 http://tools.ietf.org/html/rfc6265标准的极简HTTP用户代理Cookie存储罐。
与常用的HTTP::Cookies模块不同,本模块无需依赖HTTP::Request和HTTP::Response对象。兼容LWP的适配器可通过HTTP::CookieJar::LWP获取。
CONSTRUCTORS new my $jar = HTTP::CookieJar->new;
返回一个新的空Cookie存储罐
METHODS add $jar->add( "http://www.example.com/", "lang=en-US; Path=/; Domain=example.com" );
给定请求URL和"Set-Cookie"头字符串,尝试将Cookie添加到存储罐。若Cookie已过期,则删除存储罐中所有匹配的Cookie。"Max-Age"属性将被转换为绝对"Expires"属性。
若请求URL缺失或无效,将抛出异常。成功处理Cookie返回true,失败返回undef或空列表。
clear $jar->clear
清空Cookie存储罐。
cookies_for my @cookies = $jar->cookies_for("http://www.example.com/foo/bar");
给定请求URL,返回应发送的Cookie哈希引用列表。这些哈希引用是副本——修改其值不会影响存储罐中的Cookie。
标记为"secure"的Cookie仅在请求方案为"https"时返回。过期的Cookie不会返回。
Cookie哈希引用的键可能包括:
* name -- Cookie名称
* value -- Cookie值
* domain -- Cookie适用的域名
* path -- Cookie适用的路径
* expires -- 若存在,表示Cookie过期的纪元秒数
* secure -- 若存在,表示Cookie被设为"Secure"
* httponly -- 若存在,表示Cookie被设为"HttpOnly"
* hostonly -- 若存在,表示Cookie仅能用于主机域名
* creation_time -- Cookie首次存储的纪元秒数
* last_access_time -- Cookie最后存储的纪元秒数
需注意,"httponly"意味着Cookie应仅用于请求,而不能通过Javascript等获取。这对Perl用户代理意义不大。
通常,用户代理应改用"cookie_header"方法。
若请求URL缺失或无效,将抛出异常。
cookie_header my $header = $jar->cookie_header("http://www.example.com/foo/bar");
给定请求URL,返回包含所有相关Cookie的正确格式化字符串。该字符串可直接用于HTTP请求的"Cookie"头,例如:
SID=31d4d96e407aad42; lang=en-US
遵循与"cookies_for"相同的排除规则。
若请求无效或无适用Cookie,返回空字符串。
dump_cookies my @list = $jar->dump_cookies; my @list = $jar->dump_cookies( { persistent => 1 } );
返回原始Cookie字符串列表。这些字符串类似于从"Set-Cookie"头接收的内容,但包含额外内部字段。该列表仅供"load_cookies"用于实现Cookie存储罐持久化。
若传入含真值"persistent"键的哈希引用,将忽略无"Expires"时间(即"会话Cookie")的Cookie。
以下是使用Path::Tiny保存Cookie存储罐文件的简单示例:
path("jar.txt")->spew( join "\n", $jar->dump_cookies );
load_cookies $jar->load_cookies( @cookies );
给定来自"dump_cookies"的Cookie字符串列表,将其添加到存储罐。以此方式添加的Cookie将覆盖具有相似域名、路径和名称的现有Cookie。
为方便加载新对象,返回存储罐对象:
my $jar = HTTP::CookieJar->new->load_cookies( @cookies );
以下是使用Path::Tiny加载Cookie存储罐文件的简单示例:
my $jar = HTTP::CookieJar->new->load_cookies(
path("jar.txt")->lines
);
LIMITATIONS AND CAVEATS RFC 6265与先前标准 本模块尽可能遵循RFC 6265的用户代理规则。因此,它不处理也不生成"Set-Cookie2"和"Cookie2"头,不实现".local"后缀,也不按先前RFC进行路径/域名匹配。
国际化域名 请求中的国际化域名必须采用正确的ASCII编码形式。
公共后缀 若已安装Mozilla::PublicSuffix,将根据公共后缀列表检查Cookie域名。仅允许公共后缀Cookie作为主机专属Cookie。
第三方Cookie 根据RFC 6265,仅当Cookie无"Domain"属性(此时为"host-only")或"Domain"属性是请求URL的后缀时,才可接受该Cookie。这有效防止了站点A为无关站点B设置Cookie,消除了潜在的第三方Cookie途径。
SEE ALSO * HTTP::Cookies
- Mojo::UserAgent::CookieJar
SUPPORT Bugs / Feature Requests 请通过https://github.com/dagolden/HTTP-CookieJar/issues提交错误报告或功能请求。您将自动收到问题进展通知。
Source Code 这是开源软件。代码仓库遵循许可条款开放公众查阅与贡献。
https://github.com/dagolden/HTTP-CookieJar
git clone https://github.com/dagolden/HTTP-CookieJar.git
AUTHOR David Golden dagolden@cpan.org
CONTRIBUTORS * Dan Book grinnz@grinnz.com
-
David Golden xdg@xdg.me
- jvolkening jdv@base2bio.com
COPYRIGHT AND LICENSE 本软件版权归David Golden所有(2013年)。
此为自由软件,遵循以下许可:
Apache License, Version 2.0, January 2004