Laravel

Solución Error 419 Página expirada en Laravel

Solución Error 419 Página expirada en Laravel. Al estar interactuando con su proyecto Laravel en algunos casos se suele recibir errores 419 Expired en Laravel. Vamos a desglosar punto a punto el por qué puede pasar esto y cómo solucionarlo de manera practica.

Causas que originan el error 419 en Laravel:

  • Vencimiento del token: Los tokens CSRF tienen una vida útil limitada por razones de seguridad. Por ejemplo, dejar una página con un formulario abierta durante muchas puede provocar que el token caduque y por ende Laravel genera un error 419 cuando finalmente se envía el formulario al no coincidir los tokens.
  • Directiva CSRF no declarada en formularios: Si olvida agregar la directiva @csrf en cualquier formulario, Laravel bloqueará la solicitud porque espera un token CSRF válido, esto se verifica para cada solicitud POST, PUT, PATCH y DELETE.
  • Vencimiento de la sesión de usuario: El token CSRF está vinculado a la sesión del usuario. Si la sesión vence, el token se invalida y el envío del formulario falla.
  • Mezcla de https con http: Es decir cuando su proyecto esta configurada con una solicitud a través de HTTPS y usted intenta acceder a ella a través de HTTP, usted se encontrara este error.

Otras posibles causas:

  • Caché o cookies del navegador: a veces, las cookies obsoletas o los datos almacenados en caché pueden interferir con la validación CSRF. Es recomendable borrar la cache
  • Configuración del servidor: Si la configuración de su servidor no maneja las sesiones correctamente (por ejemplo, si pierde datos de la sesión o no encuentra la ruta para almacenar), esto también puede generar errores 419.

¿Por qué aparece el error “419 Página expirada en Laravel”?

El error 419 Página expirada de laravel suele deberse a un problema de falta de coincidencia de tokens CSRF. Los tokens CSRF protegen su aplicación contra envíos de formularios no autorizados al verificar que las solicitudes las realicen usuarios autenticados dentro de la aplicación.

En Laravel, a menudo se utiliza la  directiva @csrf en formularios, que genera un token CSRF único y oculto para cada sesión de formulario.

Veamos un ejemplo de una correcta integración en formularios

<form action="/students" method="post">
    @csrf
    <!-- Mas campos de formulario -->
    <button type="submit">Enviar</button>
</form>

Una vez que este presente en el formulario, el token de la CSRF será revisado, y ya no verá un error de 419.

Solución de error 419 Página expirada en Laravel

Si has intentado limpiar caché con php artisan, rutas, vistas y configuración, pero sin resultados positivos. Aquí, les traigo la solución.

La mayoría de los errores 419 se lanzan cuando el token csrf está siendo desajustado o no declarado.

  • Intente usar la ventana de incógnito, Si funcionó, entonces el problema está en las memorias caché..
  •  Puede ver manualmente la ficha csrf: {{ csrf_token() }}
  • Puedes aumentar el tiempo de vida de la sesión enconfig/session.php  cambiando el lifetime value en el fichero .env utilizando esto SESSION_LIFETIME=120
  •  Compruebe tanto el formulario como su sitio utilice el protocolo HTTPS
  •  Comprobar archivo .env, asegúrate de tener ambas cosas SESSION_DOMAIN y APP_URL sean iguales

Solucion Error 419 en Ajax jQuery

Si estás usando la llamada AJAX, entonces tienes que pasar el token csrf. veamos un ejemplo de uso

<script>
$(document).ready(function() {

    $('#estado_id').on('change', function() {
        var idCountry = this.value;
        $("#state-dropdown").html('');
        $.ajax({
            url: "{{ url('api/fetch-states') }}",
            type: "POST",
            data: {
                country_id: idCountry,
                _token: '{{ csrf_token() }}'
            },
            dataType: 'json',
            success: function(result) {
                console.log(result)
            }
        });
    });
});
</script>

Otra  solución que ha funcionado:

Abrir el archivo config/session.php y realizar algunos cambios:

Actualizar los valores:

'lifetime' => 120,
'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE', false),

Para finalizar,

Espero que este articulo le haya ayudado a entender lo que causa un error de 419 páginas en Laravel, y que sea capaz de manejar los formularios de manera correcta. Ademas, de ampliar la vida útil de SESSION_LIFETIME en Laravel.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.
Botón volver arriba
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad