El error 419 significa que el token CSRF expiró o no fue enviado. Laravel lo usa para proteger formularios contra ataques maliciosos. Aquí están las soluciones más comunes.

Por qué ocurre el Error 419 en Laravel
El error más común es porque el token CSRF (Cross-Site Request Forgery) ha expirado, es inválido o no fue enviado junto con la solicitud.
Laravel incluye protección CSRF por defecto en todos los formularios y peticiones POST/PUT/DELETE, por lo que si el token no coincide con el almacenado en la sesión (por ejemplo, porque la sesión expiró o el formulario lleva mucho tiempo abierto sin refrescarse), Laravel rechaza la solicitud con este error.
1. Falta el @csrf en el formulario (causa #1)
Agrega la directiva dentro de todo formulario con método POST:
<form method="POST" action="/ruta">
@csrf
<!-- tus campos -->
</form>2. Sesión expirada por inactividad
Aumenta el tiempo de vida de la sesión en .env:
SESSION_LIFETIME=120 # minutos3. Peticiones AJAX / Axios sin el token
Agrega la meta tag en tu layout y configura Axios para enviarla automáticamente:
<meta name="csrf-token" content="{{ csrf_token() }}">en Javascript:
axios.defaults.headers.common['X-CSRF-TOKEN'] =
document.querySelector('meta[name="csrf-token"]').content;4. Problemas de caché o configuración
Limpia toda la caché con un solo comando:
php artisan optimize:clear5. Excluir rutas (webhooks externos)
En app/Http/Middleware/VerifyCsrfToken.php:
protected $except = [
'stripe/webhook',
'api/*',
];En Laravel 11, en bootstrap/app.php:
->withMiddleware(function (Middleware $middleware) {
$middleware->validateCsrfTokens(except: ['stripe/webhook']);
})6. Personalizar la página de error 419
Crea el archivo resources/views/errors/419.blade.php:
@extends('layouts.app')
@section('content')
<h2>Sesión expirada</h2>
<p>Por seguridad tu sesión caducó.</p>
<a href="{{ url()->previous() }}">Volver e intentar de nuevo</a>
@endsectionChecklist rápido
@csrfpresente en el formularioSESSION_LIFETIMEconfigurado en.env- Token enviado en headers si usas AJAX
- Caché limpia con php artisan
optimize:clear - Ruta excluida si es webhook externo
Conclusión y Recomendación
En Laravel casi siempre tiene una causa simple: falta el @csrf o la sesión expiró. Sigue el checklist de arriba de forma ordenada y resolverás el problema en minutos.
Recomendación principal: nunca desactives el middleware CSRF globalmente. Es una capa de seguridad esencial. Si necesitas excluir rutas, hazlo de forma puntual solo para webhooks o APIs que ya tienen su propio sistema de autenticación (token Bearer, firma HMAC, etc.).
Para proyectos nuevos, adopta desde el inicio el hábito de incluir @csrf en cada formulario y configurar correctamente SESSION_LIFETIME según el flujo de tu aplicación. Eso te evitará este error por completo.
En otro articulo hablo acerca de la Solución Error 419 Página expirada en Laravel
