libhttp-cookiejar-perl:基于 Perl 的 HTTP 客户端 Cookie 管理库项目

用户可借助该项目实现 HTTP 客户端的 Cookie 管理功能,它是一个符合 RFC 6265 标准的极简 Cookie jar 模块,支持添加、清除、获取 Cookie 等操作,能有效处理 Cookie 存储与检索。【此简介由AI生成】

分支1Tags0
文件最后提交记录最后更新时间
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

COPYRIGHT AND LICENSE 本软件版权归David Golden所有(2013年)。

此为自由软件,遵循以下许可:

  Apache License, Version 2.0, January 2004

项目介绍

用户可借助该项目实现 HTTP 客户端的 Cookie 管理功能,它是一个符合 RFC 6265 标准的极简 Cookie jar 模块,支持添加、清除、获取 Cookie 等操作,能有效处理 Cookie 存储与检索。【此简介由AI生成】

定制我的领域