perl - 从 Mojolicious 用户代理响应中提取 cookie

标签 perl user-agent lwp-useragent mojolicious

我开始使用 Mojolicious 库进行测试,一切正常,直到我尝试从响应中提取 cookie。

我已经尝试了几种变体:

$ua = Mojo::UserAgent->new();
$ua->on( error => sub { my ($ua, $error) = @_; say "This looks bad: $error"; } );
$ua->max_redirects(1)->connect_timeout(10)->request_timeout(20);
$ua->cookie_jar(Mojo::CookieJar->new);

# ... later ...

my $tx  = $ua->get($url);
my $jar = $ua->cookie_jar->extract($tx); # This is undef

不过,我可以通过 LWP::UserAgent 提取 cookie。然而,LWP 有几个不同的问题,使该选项目前不可行。只是为了比较,这里是提取 cookie 的 LWP 代码。

my $lwp = LWP::UserAgent->new(cookie_jar => {}, timeout => 20, max_redirect => 1);
push @{ $lwp->requests_redirectable }, 'POST';
my $response = $lwp->get($url);
die $response->status_line unless $response->is_success;
$lwp->cookie_jar->scan(\&ScanCookies);

sub ScanCookies {
   my ($version, $key, $value) = @_;
   say "$key = $value";
}

所以我知道我的 $url 等是正确的。

编辑:我应该提到我使用的是 strawberry 5.14

Edit2:我还应该提到 cookie 确实进入了用户代理,因为 session ID 得到了正确处理。不幸的是,我需要访问另一个 cookie(用于测试站点),但我似乎无法获得正确的咒语来访问它们……说我认为这是程序员的问题,仅此而已.

最佳答案

使用这个:

$tx->res->cookies

关于perl - 从 Mojolicious 用户代理响应中提取 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11110484/

相关文章:

javascript - 如何使用 javascript 检查 Windows Phone 用户代理?

perl - 散列中的散列 - 如何存储元素?

perl - 具有零值的退出代码状态是否总是意味着在 Perl 中成功运行?

java - 设置 java URLConnection 的用户代理

perl - 在 Perl 中处理共享公共(public) "ancestor"的模块的多重继承的正确方法是什么?

perl - 如何使用 LWP::UserAgent 登录 Perl 并使用 HTTP::Cookies 检查 cookies 值?

perl - 通过Perl中的Way2sms自动发送短信

perl - 如何开始一个新的 Perl 模块分发?

Linux 如何从父目录执行 bash 脚本?

c++ - 即用户代理wxWidgets