LoginSignup
7
6

More than 3 years have passed since last update.

Laravel+Passport+Vue.js+axiosでPost通信ができない

Posted at

環境

  • Laravel 5.8
  • Passport 7.3
  • Vue.js 2.6.10

問題

Vue.jsのaxiosを使用してAPI通信をする際、認証機能としてPassportを使用しました。
取得したトークンをリクエストのヘッダーに追加して非同期通信をしてもらいたく書いたコードがこちら


axios.get(
     APP_URL,
     {
          headers: {
               "Content-Type": "application/json",
               "Authorization": 'Bearer ' + token
          }
     },
     ).then(function(response) {
          console.log(response);
     }).catch(function(error) {
          console.log(error);
     }
);

GET通信はこれでうまくいきました。
しかし、これをそのままPOST通信に変えると途端に401エラー、つまりは認証失敗になってしまいます。

解決策

headersにいれるときの書き方を変えるとうまくいきます


axios.defaults.headers.common['Authorization'] = "Bearer " + token;
axios.post(
     APP_URL,
     {
          headers: {
               "Content-Type": "application/json"
          }
     },
     ).then(function(response) {
          console.log(response);
     }).catch(function(error) {
          console.log(error);
     }
);

残った疑問

ただheadersにいれるだけではなく、axios.defaults.headers.commonを介さないとだめな理由がわかりませんでした
bootstrap.jsで記述されてる例もありましたが、トークンが変わるときとか大丈夫なんでしょうか

そのあたりお詳しい方コメントいただけると幸いです

参考記事

7
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6