APIに送信する前に、ユーザー名とパスワードの組み合わせをBase64に変換する必要があります。
javascript BTOA機能は私にとって効果的ですが、bashでbase64コマンドを使用しようとすると、少し異なる結果が出ます。
JavaScript:
btoa("hello"); # aGVsbG8=
btoa("username:password"); # dXNlcm5hbWU6cGFzc3dvcmQ=
btoa("testing"); # dGVzdGluZw==
大きな打撃:
echo hello | base64 # aGVsbG8K
echo username:password | base64 # dXNlcm5hbWU6cGFzc3dvcmQK
echo testing | base64 # dGVzdGluZwo=
結果は常に似ていますが異なります。
サーバーにはJSスタイルのコーディングが必要ですが、bashを使用する必要があります。
結果は異なりますが、同様の理由は何ですか? bashを使用してjavascriptで結果を生成する方法は?
答え1
echo
「helpively」は出力に改行文字を追加します。基準)、Base64も忠実にエンコードします。
echo
改行を追加しないように指示します。
$ echo hello | od -c
0000000 h e l l o \n
0000006
$ echo -n hello | od -c
0000000 h e l l o
0000005
または、より良い方法は次のものを使用することですprintf
。
$ printf '%s' hello | od -c
0000000 h e l l o
0000005
$ printf '%s' hello | base64
aGVsbG8=
$ echo -n hello | base64
aGVsbG8=