import axios, { AxiosRequestConfig } from 'axios'; import Cookies from 'js-cookie'; import { isSameOrigin } from './utils'; const CSRFTokenName = 'X-CSRF-Token'; export const initAjaxHandlersCSRFToken = () => { axios.interceptors.request.use(config => { setHeaders(config); return config; }); }; function setHeaders(config: AxiosRequestConfig) { if (isSameOrigin(config)) { config.headers ??= {}; config.headers['X-Requested-With'] ??= 'XMLHttpRequest'; const token = Cookies.get(CSRFTokenName); if (token) { config.headers[CSRFTokenName] ??= token; } } }