【问题标题】:Extracting cookies from a Mojolicious user agent response从 Mojolicious 用户代理响应中提取 cookie
【发布时间】:2012-06-22 01:17:56
【问题描述】:

我开始使用 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 等是正确的。

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

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

【问题讨论】:

  • 我想知道 $url 包含什么符号...你能在 ScanCookies 中检查 $key 是否真的等于 $url 吗?
  • 它在 URL 中有一些查询参数。没有什么太奇怪的了。

标签: perl user-agent lwp-useragent mojolicious


【解决方案1】:

使用这个:

$tx->res->cookies

【讨论】:

  • 正确的文档说我应该能够将其用作数组引用。但是说标量(@{$tx->res->cookies});产生一个 0;
  • 可能是响应没有cookie?试试MOJO_MAX_REDIRECTS=1 perl -MMojo::UserAgent -E '$u = Mojo::UserAgent->new; say($_->name, "\t", $_->value) for @{($u->get("http://google.com/"))->res->cookies}'
  • 我做了些许修改(因为 windows),我得到了 cookie。嗯...我知道我正在从我的网络服务器获得重定向。我想知道 302 回复是否有 cookie 而不是以下 200 回复。让我卷曲看看。 [后来] 确认,最初的 302 有 cookie。现在的问题是这重要吗?我认为 cookie 应该在罐子里堆积起来......但我正试图从回复中提取它们......所以想通过 t4 :)
猜你喜欢
  • 2012-03-25
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
相关资源
最近更新 更多