Извличане на бисквитки от отговор на потребителски агент на Mojolicious

Започнах да използвам библиотеката Mojolicious за тестване и всичко работеше добре, докато не се опитах да извлека бисквитки от отговор.

Пробвах няколко варианта на:

$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. LWP обаче има няколко различни проблема, които правят тази опция неработеща за момента. Само за сравнение тук е 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: Трябва също да спомена, че бисквитките влизат в потребителския агент със сигурност, тъй като идентификаторът на сесията се обработва правилно. За съжаление имам нужда от достъп до друга бисквитка (за тестване на сайта) и просто не мога да получа правилното заклинание за достъп до тях... казвайки, че смятам, че това е проблем на програмиста и нищо повече .


person telesphore4    schedule 19.06.2012    source източник
comment
Чудя се какви символи съдържа $url... можете ли да проверите дали $key наистина е равен на $url във вашите ScanCookies?   -  person raina77ow    schedule 20.06.2012
comment
Ами има някои параметри на заявката в URL адреса. Нищо твърде странно.   -  person telesphore4    schedule 20.06.2012


Отговори (1)


Използвай това:

$tx->res->cookies
person Denis Ibaev    schedule 20.06.2012
comment
Правилно документите казват, че трябва да мога да направя, за да използвам това като реф. масив. но кажете скалар( @{$tx-›res-›cookies}); дава 0; - person telesphore4; 20.06.2012
comment
Може би отговорът няма бисквитки? Опитайте MOJO_MAX_REDIRECTS=1 perl -MMojo::UserAgent -E '$u = Mojo::UserAgent->new; say($_->name, "\t", $_->value) for @{($u->get("http://google.com/"))->res->cookies}'. - person Denis Ibaev; 21.06.2012
comment
Направих това с леки модификации (заради Windows) и получих бисквитки. Хм... Знам, че получавам пренасочване от моя уеб сървър. Чудя се дали отговорът 302 има бисквитки, а не следващият отговор 200. Нека се навия и да видя. [по-късно] Потвърдено, първоначалният 302 има бисквитката. Сега въпросът е важно ли е това? Мислех, че бисквитките трябва да се натрупват в буркана... но се опитвам да ги извлека от отговора, така че... помислете го през t4 :) - person telesphore4; 21.06.2012