【问题标题】:How to explicitly set cookie using LWP如何使用 LWP 显式设置 cookie
【发布时间】:2019-05-06 23:51:34
【问题描述】:

我想设置一些 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 时,它​​什么也不返回,而是返回预期的 cookie。事实上,在我的完整程序中,当我尝试这样做时,会发送请求,但不会发送 cookie。

我错过了什么?

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

【问题讨论】:

    标签: perl cookies lwp


    【解决方案1】:

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

    【讨论】:

    • 关于 HTTPS,所有 HTTP cookie 都在 HTTPS 中可用。您可以使用“安全”标志(示例中的第二个“0”,就在“365 * 86400”之前)制作仅 HTTPS 的 cookie,但请注意 HTTPS 的不同端口号(443)。
    • 好吧,看来 127.0.0.1 也可以,所以我解封了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多