35 lines
809 B
TypeScript
35 lines
809 B
TypeScript
import axios from "axios";
|
||
import Cookies from "js-cookie";
|
||
|
||
const API_URL = "http://localhost:5000";
|
||
|
||
const api = axios.create({
|
||
baseURL: API_URL,
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
Accept: "application/json"
|
||
},
|
||
withCredentials: true,
|
||
});
|
||
|
||
// Interceptor – before sending the request
|
||
api.interceptors.request.use(
|
||
(config) => {
|
||
// For data update methods, add CSRF token
|
||
const method = config.method?.toUpperCase();
|
||
const modifyingMethods = ["POST", "PUT", "PATCH", "DELETE"];
|
||
|
||
if (method && modifyingMethods.includes(method)) {
|
||
const csrfToken = Cookies.get("csrf_access_token");
|
||
if (csrfToken) {
|
||
config.headers["X-CSRF-TOKEN"] = csrfToken;
|
||
}
|
||
}
|
||
|
||
return config;
|
||
},
|
||
(error) => Promise.reject(error)
|
||
);
|
||
|
||
export default api;
|