雖然在文件中看不出來,但 Hijk 這個低階的 HTTP 客戶端函式庫是算是「支援」 HTTP Auth 。

HTTP Auth 這個機制是透過在訊息表頭上加入特定的值,參考 Wikipedia: Basic access authentication 這則文章中的說明,在請求訊息中的這行表頭:

Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l

便表示了「本訊息由某某某授權發出」。而那段看來複雜的字串,其生成方式則為:

(encode_base64("Aladdin:OpenSesame") =~ s/\n//r);

其中 Aladdin 是帳號,OpenSesame 是密碼。可用以下指令驗證:

perl -MMIME::Base64=encode_base64 -E 'my $digest = (encode_base64("Aladdin:OpenSesame") =~ s/\n//r); say $digest;'
#=> QWxhZGRpbjpPcGVuU2VzYW1l

使用 Hijk::request 時,則是傳入於 head 參數內,大約如下:

my $digest = (encode_base64("${user}:${pass}") =~ s/\n//r);
my $res = Hijk::request({
    ...
    head => [ 'Authorization' => "Basic $digest", ... ],
    ...
});

HTTP Cookie 也是同樣的「支援」方式。

🍻🍻🍻