> Faqs > Solucionar Axios ERR_BAD_REQUEST al pasar a la versión 1.6.5 - Request failed with status code 419

Solucionar Axios ERR_BAD_REQUEST al pasar a la versión 1.6.5 - Request failed with status code 419

Voy a escribir una pregunta y la solición encontrada, por si a alguien le puede ayudar.

Estoy en una aplicación SPA que se conecta con un API desarrollada con Laravel. La autenticación en Laravel se hace con Sanctum / Fortify y estaba funcionando perfectamente.

Solo que al cambiar la versión de Axios a la 1.6.5 ha empezado a fallar.

Da errores de Request failed with status code 419 al intentar acceder a las rutas de autenticación del backend.

Copio y pego los errores que me aparecen:

Por una parte teneo este error al acceder a la ruta de login:

POST http://localhost/login 419 (unknown status)

La consola de Javascript me da este otro error:

axios.js?v=f1879ed8:1163 Uncaught (in promise) AxiosError {message: 'Request failed with status code 419', name: 'AxiosError', code: 'ERR_BAD_REQUEST', config: {…}, request: XMLHttpRequest, …}

Y se extiende el error con este otro mensaje:

code: "ERR_BAD_REQUEST"
config: {transitional: {…}, adapter: Array(2), transformRequest: Array(1), transformResponse: Array(1), timeout: 0, …}
message:  "Request failed with status code 419"
name:  "AxiosError"
request: XMLHttpRequest {onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: true, upload: XMLHttpRequestUpload, …}
response: {data: {…}, status: 419, statusText: 'unknown status', headers: AxiosHeaders, config: {…}, …}
stack: "AxiosError: Request failed with status code 419\n    at settle (http://localhost:3000/node_modules/.vite/deps/axios.js?v=f1879ed8:1163:12)\n    at XMLHttpRequest.onloadend (http://localhost:3000/node_modules/.vite/deps/axios.js?v=f1879ed8:1367:7)"
[[Prototype]]: Error

Ver más abajo la solución.

Respuestas

La librería Axios en la versión 1.6.5 tuvo algunos cambios y parece que hay que hacer una configuración nueva que hay que realizar en el código que realiza las conexiones.

En concreto se trata de:

withXSRFToken: true,

Esa configuración se necesita porque estoy usando Sanctum para autenticación en una SPA Stateful.

El código completo que uso para configurar axios es este:

export const axios = Axios.create({
  baseURL: BASE_URL,
  headers: {
    'X-Requested-With': 'XMLHttpRequest',
    'Accept': 'application/json',
  },
  withCredentials: true,
  withXSRFToken: true,
});
Miguel Angel
3145 140 209 17