Perl LWP:通过HTTP标头发送Cookie不起作用

时间:2013-02-12 14:39:13

标签: perl cookies lwp

我知道如果你想使用cookie,你必须编写代码:

$ua = LWP::UserAgent->new();
$ua->cookie_jar(HTTP::Cookies->new());

然后你可以得到(),post()等等。

但是,如果我只是将cookie字符串放入HTTP HEADER和get(),我就无法得到正确的响应。为:

$ua = LWP::UserAgent->new();
$ua->get($url, 'Cookie' => $cookie_string);

2 个答案:

答案 0 :(得分:2)

我想您会发现使用该方法正确设置了Cookie标头。

为了确保,你可以写

my $resp = $ua->get('http://www.myurl.com', Cookie => 'my=data');

print $resp->request->as_string;

你应该看到请求包含行

Cookie: my=data

答案 1 :(得分:-1)

从文档中,看起来$ua->cookie_jar()需要哈希,要么指定选项,要么提供数据结构来存储cookie。我会尝试

$ua->cookie_jar({});

另外,请注意,您尝试使用的方法只会将Cookie存储在内存中,因此一旦您的脚本结束,您对所述Cookie的了解也会如此。你可能想看看

http://metacpan.org/pod/HTTP::Cookies

http://www.perl.com/pub/2002/08/20/perlandlwp.html

有关内存中cookie jar和基于文件的jar文件的示例。

至于为什么HTTP :: Cookie在调用它们的时候不会返回合适的哈希值,我不确定但它看起来不是。