1. ホーム
  2. request

[解決済み] axiosでBasic Authを送信する方法

2022-03-08 16:59:54

質問

以下のコードを実装しようとしているのですが、何かうまくいきません。以下はそのコードです。

      var session_url = 'http://api_address/api/session_endpoint';
      var username = 'user';
      var password = 'password';
      var credentials = btoa(username + ':' + password);
      var basicAuth = 'Basic ' + credentials;
      axios.post(session_url, {
        headers: { 'Authorization': + basicAuth }
      }).then(function(response) {
        console.log('Authenticated');
      }).catch(function(error) {
        console.log('Error on Authentication');
      });

401エラーが返ってくる。Postmanで実行すると、Basic Authを設定するオプションがあります。このフィールドを埋めないと、401も返されますが、埋めればリクエストは成功します。

何が間違っているのか、何か思い当たることはありますか?

この実装方法のAPIのドキュメントの一部を紹介します。

<ブロッククオート

このサービスは、ヘッダーのBasic Authentication情報を利用して、ユーザーセッションを確立します。認証情報は、サーバーに対して検証されます。この Web サービスを使用すると、渡されたユーザー資格情報を使用してセッションが作成され、JSESSIONID が返されます。このJSESSIONIDは、その後のWebサービス呼び出しのリクエストで使用することができます。

解決方法は?

Basic Authのパラメータにquot;auth"があるのですが、これは何ですか?

auth: {
  username: 'janedoe',
  password: 's00pers3cret'
}

ソース/ドキュメント https://github.com/mzabriskie/axios

await axios.post(session_url, {}, {
  auth: {
    username: uname,
    password: pass
  }
});