以下程序在尝试访问需要基本身份验证的 https 网站时失败。
use Mojo::UserAgent;
my $ua = Mojo::UserAgen->new;
my $user = "foobar";
my $pass = "Cant#change";
my $url = "https://$user:$pass\@site.foo.com";
my $tx = $ua->get($url);
if (my $res = $tx->success) {
say $res->body;
}
else {
my ($message, $code) = $tx->error;
say $code ? "$code response $message" : "Connection error: $message";
}
当我使用 MOJO_USERAGENT_DEBUG=1 运行时,我得到以下输出:
-- Blocking request (https://foobar:cant#change@site.foo.com)
-- Connect (https:foobar:Cant:443)
Connection error: Couldn't connect
使用从 CPAN 更新的 Mojolicious 3.35。不幸的是,密码可能包含“特殊字符”(ascii #!@%^& 等),并且不能将密码更改为不包含 # 的内容。Web 服务器在 Web 浏览器中正确处理请求,因此我认为这不是 Web 服务器配置问题。
那么在 Mojo 中还有其他方法可以实现这一点吗?