次のプログラムは、基本認証を必要とする https Web サイトにアクセスしようとすると失敗します。
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でこれを達成する別の方法はありますか?