Technik · 11. September 2026

HTTP 419 Statuscode — was er bedeutet und wie Sie ihn beheben

Der HTTP 419 Statuscode ist kein offizieller IANA-Code. Hier erfahren Sie, woher er kommt, warum Sie ihn sehen und wie Sie ihn in Ihrer Anwendung beheben.

Sie debuggen einen API-Aufruf und Ihr HTTP-Client gibt 419 zurück. Sie prüfen das offizielle IANA-Register — es ist nicht dort. Sie suchen auf MDN — nichts. Was ist HTTP 419, und warum sendet Ihr Server es?

Die kurze Antwort

HTTP 419 ist kein offizieller HTTP-Statuscode. Er wurde in keiner RFC definiert oder bei IANA registriert. Es ist ein benutzerdefinierter Statuscode, der von bestimmten Frameworks verwendet wird — am bemerkenswertesten Laravel (PHP) — um anzugeben, dass ein CSRF-Token abgelaufen ist oder fehlt.

Wenn Sie 419 sehen, war Ihre Anfrage entweder:

  1. Hatte überhaupt kein CSRF-Token, oder
  2. Enthielt ein CSRF-Token, das abgelaufen ist (Laravel-Standard ist 120 Minuten), oder
  3. Das Sitzungscookie ging zwischen den Anfragen verloren

Woher HTTP 419 kommt

Laravel definiert diesen Statuscode in seinem Exception-Handler. Wenn eine POST-, PUT-, PATCH- oder DELETE-Anfrage einen von der VerifyCsrfToken-Middleware geschützten Endpunkt trifft und das Token ungültig ist, antwortet Laravel mit:

HTTP/1.1 419 Page Expired

Der Text “Page Expired” ist die Standard-Laravel-Grundphrase für 419. Er beschreibt nicht eine Seite — er beschreibt den Sitzungszustand, an den das CSRF-Token der Seite gebunden war.

Andere Frameworks, die 419 verwenden

Während Laravel die häufigste Quelle ist, haben einige andere PHP-Frameworks und benutzerdefinierte APIs 419 für ähnliche “Session/Token abgelaufen”-Semantik übernommen. Es ist eine De-facto-Konvention im PHP-Ökosystem, kein universeller Standard.

Wie Sie HTTP 419 beheben

Wenn Sie eine Laravel-App bauen

Für Browser-Formulare (traditionelles Rendering):

Die häufigste Ursache ist ein Sitzungs-Timeout. Der Benutzer öffnet ein Formularelement, geht zwei Stunden weg und übermittelt. Das CSRF-Token war gültig, als die Seite geladen wurde, aber die Sitzung ist seitdem abgelaufen.

Lösungen:

  1. Verlängern Sie die Sitzungsdauer in config/session.php:
// Standard ist 120 Minuten
'lifetime' => 480, // 8 Stunden
  1. Fügen Sie clientseitige Token-Aktualisierung hinzu — bei Seitenaufruf senden Sie eine leichte AJAX-Anfrage, um ein neues CSRF-Token zu erhalten:
<meta name="csrf-token" content="{{ csrf_token() }}">
// Token alle 30 Minuten aktualisieren
setInterval(() => {
  fetch('/api/csrf-token', {
    headers: { 'X-Requested-With': 'XMLHttpRequest' }
  }).then(r => r.json()).then(data => {
    document.querySelector('meta[name="csrf-token"]').content = data.token;
  });
}, 30 * 60 * 1000);
  1. Behandeln Sie 419 elegant auf dem Client — fangen Sie die 419-Antwort ab und leiten Sie zur Anmeldung um oder laden Sie die Seite neu:
fetch('/api/save', { method: 'POST', body: formData })
  .then(response => {
    if (response.status === 419) {
      // Sitzung abgelaufen — neu laden, um frisches Token zu erhalten
      window.location.reload();
    }
    return response.json();
  });

Wenn Sie eine Laravel-API konsumieren

Wenn Sie eine Laravel-API von einer mobilen App, SPA oder einem externen Dienst aufrufen und 419 erhalten:

  1. Überprüfen Sie Ihre Sitzungs/Cookie-Handhabung. Die API erwartet möglicherweise Sitzungscookies. Stellen Sie sicher, dass Ihr HTTP-Client Cookies sendet und empfängt.

  2. Verwenden Sie tokenbasierte Authentifizierung stattdessen. Für API-Konsumenten haben Laravel Sanctum oder Laravel Passport Token nicht dasselbe CSRF-Ablaufproblem. Verwenden Sie Authorization: Bearer &lt;token&gt;-Header statt Sitzungscookies.

  3. Authentifizieren Sie sich erneut. Wenn die Sitzung abgelaufen ist, ist die einzige Lösung sich erneut anzumelden und eine neue Sitzung zu erhalten.

Wenn Sie DevOps/Infrastruktur sind

Wenn Sie 419 in Ihren Load-Balancer- oder API-Gateway-Logs sehen:

  1. Prüfen Sie, ob das Backend Laravel ist. 419 ist fast immer Laravel-CSRF.
  2. Prüfen Sie die Sitzungsspeicherung. Wenn Redis oder der dateibasierte Sitzungsspeicher voll oder falsch konfiguriert ist, können Sitzungen vorzeitig ablaufen.
  3. Prüfen Sie die Uhrensynchronisation. Wenn Ihre Anwendungsserver falsch synchronisierte Uhren haben, können die Sitzungsablaufberechnungen falsch sein.

Wie Sie HTTP-Statuscodes prüfen

Wenn Sie API-Antworten debuggen und schnell nachschlagen müssen, was ein Statuscode bedeutet, können Sie ein Referenztool verwenden. Unsere HTTP-Statuscodes-Referenz enthält alle 63 offiziellen Codes mit Beschreibungen und Suche.

Verwandte Statuscodes

Code Bedeutung Beziehung
401 Unauthorized Fehlendes oder ungültiges Authentifizierungstoken
403 Forbidden Authentifiziert, aber nicht berechtigt
408 Request Timeout Server hat bei der Anfrage Zeitüberschreitung
419 Page Expired CSRF-Token abgelaufen (Laravel-spezifisch)
440 Login Timeout Eine andere Framework-spezifische Variante
503 Service Unavailable Server ist offline oder überlastet

Das Wichtigste

HTTP 419 ist Laravel, das Ihnen sagt: “Ihre Sitzung ist abgelaufen, ich kann dieser Anfrage nicht vertrauen.” Es ist kein Bug — es ist eine Sicherheitsfunktion, die wie vorgesehen funktioniert. Die Lösung ist entweder die Sitzungsdauer zu verlängern, Tokens clientseitig zu aktualisieren oder auf API-Token für programmatischen Zugriff umzusteigen.