概要
axiosを使ってHTTP通信を送る時、認証トークンなどを共通でヘッダーに付与させたい場合、リクエストインターセプターを使います。
コード例
以下は、HTTPリクエストに、認証トークンを保持するAuthorization
ヘッダーを共通で付与する例です。
axios.ts
import axios from "axios";
import type { InternalAxiosRequestConfig } from "axios";
const axiosInstance = axios.create({
baseURL: "http://localhost:5173/", // ベースURLを設定
withCredentials: false
});
// リクエストインターセプターを追加
axiosInstance.interceptors.request.use(
(config: InternalAxiosRequestConfig) => {
const token = "jwtの認証トークンなど";
// リクエストヘッダーに含める
config.headers["Authorization"] = `Bearer ${token}`;
return config;
},
(error) => {
return Promise.reject(error);
}
);
export default axiosInstance;
上記をインポートし、
import axiosInstance from "@/axios";
axiosInstance.post(endpoint);
のように使います。
詳細
リクエストインターセプターを使うことで、リクエストが送信される前に処理を挟むことが出来るようです。
これでどのリクエストにもAuthorization
ヘッダーが付与された状態になりました。
※Cookieを付与させたい場合は、axios.create
の箇所でwithCredentials: true
にする。
※上手くいかない場合は、backend側のCORS
許可の設定を確認する必要があるかもしれません。
補足
レスポンスインターセプター(サーバーからのレスポンスが返される前に処理を挟むことができる)もあるみたいです。