ターミナルで base64 エンコードが失敗すると思ったら echo が改行を吐いてた
タイトルで言い切りました。
TL;DR
good
echo -n Aladdin:OpenSesame | /usr/bin/base64 QWxhZGRpbjpPcGVuU2VzYW1l
bad
echo Aladdin:OpenSesame | /usr/bin/base64 QWxhZGRpbjpPcGVuU2VzYW1lCg==
Basic認証・Authorizationヘッダー・文字コードについて
なぜか開発環境のWebサイトへの外形監視が失敗するので困ったのがことの始まりです。
一番初めに疑ったのは文字コードでした。Basic認証が必要なWebサイトでは、レスポンス時にBasic認証に用いる文字コードを指定できます。
WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"
でもBasic認証で使う範囲の文字って ASCII だろうが UTF-8 だろうがバイト表現は同じになりません?
console.log(Buffer.from("Aladdin:OpenSesame", "ascii")) // <Buffer 41 6c 61 64 64 69 6e 3a 4f 70 65 6e 53 65 73 61 6d 65> console.log(Buffer.from("Aladdin:OpenSesame", "utf-8")) // <Buffer 41 6c 61 64 64 69 6e 3a 4f 70 65 6e 53 65 73 61 6d 65>
なりますね。
そこで base64decodeしたら改行が見つかって問題解決しました。