axios-init.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
  2. axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
  3. axios.interceptors.request.use(
  4. (config) => {
  5. config.headers = config.headers || {};
  6. const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content');
  7. const method = (config.method || 'get').toUpperCase();
  8. if (csrfToken && !['GET', 'HEAD', 'OPTIONS', 'TRACE'].includes(method)) {
  9. config.headers['X-CSRF-Token'] = csrfToken;
  10. }
  11. if (config.data instanceof FormData) {
  12. config.headers['Content-Type'] = 'multipart/form-data';
  13. } else {
  14. config.data = Qs.stringify(config.data, {
  15. arrayFormat: 'repeat',
  16. });
  17. }
  18. return config;
  19. },
  20. (error) => Promise.reject(error),
  21. );
  22. axios.interceptors.response.use(
  23. (response) => response,
  24. (error) => {
  25. if (error.response) {
  26. const statusCode = error.response.status;
  27. // Check the status code
  28. if (statusCode === 401) { // Unauthorized
  29. return window.location.reload();
  30. }
  31. }
  32. return Promise.reject(error);
  33. }
  34. );