如何使用 LWP 显式设置 cookie

How to explicitly set cookie using LWP

我想设置一些 cookie 以便稍后在 HTTP::Request 中使用。这是我的代码(已经出现问题的最短形式):

#!/usr/bin/perl -w

use strict;
use LWP::UserAgent;
use HTTP::Cookies;
use Data::Dumper; # DEBUG

my $ua = LWP::UserAgent->new;
$ua->agent("test.pl/0.1");
$ua->cookie_jar({ });
$ua->cookie_jar->set_cookie(0, "mykey", "myvalue", "/", "localhost", 80, 0, 0, 365 * 86400, 0);
print "Cookie jar: ", $ua->cookie_jar->as_string, "\n";
#print Dumper($ua->cookie_jar);
print "Cookies for URL: ", Dumper($ua->cookie_jar->get_cookies("http://localhost/"));

输出:

Cookie jar: Set-Cookie3: mykey=myvalue; path="/"; domain=localhost; port=80; expires="2020-05-05 23:40:21Z"; version=0

Cookies for URL: $VAR1 = {};

cookie 似乎已正确添加到 cookie 罐中。但是,当询问适用于我要将请求发送到的域的 cookie 时,它​​ returns 什么都没有,而不是预期的 cookie。事实上,在我的完整程序中,当我尝试这样做时,请求被发送,但 cookie 没有。

我错过了什么?

最后,我想发送一个 HTTPS 请求,而不是 HTTP,所以还请告诉我如何为此正确设置 cookie。

如果将 "localhost" 替换为 "example.com",您将获得所需的结果。域名必须至少包含一个点。