April 6, 2024

Was Fehlermeldungen über Software verraten

Fehlermeldungen

404, 503, 422 – Fehlercodes und ihre rätselhaften Nummern sind ein fester Bestandteil der Programmierung. Doch was genau steckt hinter kryptischen Meldungen wie „File not found“, „Internal Server Error“ oder „Segmentation fault“?

Dieser Artikel erklärt gängige Fehlermeldungen einfach und verständlich. Sie erfahren, was Codes wie 401, 403 und 418 aussagen – und was sie über die Funktionsweise von Software verraten.

404 – Nicht gefunden

Der wohl bekannteste Fehlercode ist 404. Er besagt schlicht, dass die angeforderte Resource, also beispielsweise eine Webseite oder Datei, auf dem Server nicht gefunden wurde.

Mögliche Ursachen für 404:

  • Falsche URL oder Tippfehler
  • Ressource wurde gelöscht
  • Falsche Verlinkung
  • Seite nie vorhanden

404 tritt also auf, wenn Client und Server unterschiedliche Erwartungen haben – der Client nach etwas fragt, das es auf dem Server nicht gibt.

Der Code geht zurück auf den HTTP-Standard und wird von Webservern bei fehlgeschlagenen Anfragen ausgegeben. 404 zeigt an, dass ein gültiger Server kontaktiert wurde, dieser aber nicht weiß, was der Client möchte.

403 – Zugriff verweigert

403 Forbidden besagt, dass der Zugriff auf die angefragte Ressource explizit untersagt ist. Im Gegensatz zu 404 existiert die Resource sehr wohl, aber es fehlt die Berechtigung sie anzuzeigen.

Ursachen für 403:

  • Falsche oder fehlende Authentifizierung
  • IP-Sperre
  • Robots.txt-Ausschluss für Crawler
  • Dateiberechtigungen verhindern Zugriff

403 tritt also dann auf, wenn authorisierte Anfragen abgelehnt werden. Der Client ist grundsätzlich berechtigt, aber eben nicht für diesen speziellen Inhalt.

403 zeigt, dass der Server den Client kennt, ihm aber den Zugang verweigert. Dies unterscheidet 403 von 404.

401 – Nicht autorisiert

401 Unauthorized bedeutet, dass der Client nicht authentifiziert ist und der Server ihn daher nicht erkennt.

Die Fehlermeldung kann auftreten, wenn:

  • keine Login-Daten übermittelt wurden
  • die Login-Daten falsch sind
  • abgelaufene Sitzung
  • erforderliches API Key fehlt

401 tritt also bei fehlender oder fehlerhafter Authentifizierung auf. Der Server kann den anfragenden Client nicht identifizieren.

Im Gegensatz zu 403 ist der Client grundsätzlich nicht berechtigt und muss sich zunächst authentifizieren. 401 ist die Aufforderung dies zu tun.

504 – Timeout

Ein 504 Timeout Error zeigt an, dass ein Upstream-Server nicht rechtzeitig geantwortet hat.

Die Fehlerursache liegt also nicht direkt beim angefragten Server, sondern bei einem Server dahinter, mit dem dieser kommuniziert.

Gründe können sein:

  • Überlastung
  • Konnektivitätsprobleme
  • Fehlkonfiguration
  • Software-Fehler

Timeout Errors treten typischerweise bei Lastspitzen auf. 504 zeigt eine vorübergehende Störung an, die mit Zeitbezug (Timeout) zu tun hat.

503 – Service nicht verfügbar

Der 503 Service Unavailable Fehlercode besagt, dass der Server zwar prinzipiell erreichbar, aber nicht einsatzbereit ist.

Mögliche Gründe:

  • Wartungsarbeiten
  • Überlastung
  • Server-Neustart
  • Software-Update

Im Gegensatz zu einem Timeout ist hier die Funktionsfähigkeit des Servers vorübergehend eingeschränkt.

503 deutet also auf geplante oder ungeplante, aber nicht dauerhafte Nichterreichbarkeit einer Ressource hin.

422 – Ungültige Daten

Der 422 Unprocessable Entity Fehler zeigt an, dass die gesendeten Daten nicht verarbeitet werden konnten, weil sie ein unerwartetes Format aufweisen oder gewisse Bedingungen nicht erfüllen.

422 kann beispielsweise auftreten, wenn:

  • Pflichtfelder eines Formulars fehlen
  • falsches Dateiformat hochgeladen wurde
  • Syntaxfehler in einer Anfrage sind
  • Regex nicht matched

Im Gegensatz zu 400 Bad Request sind die Daten nicht grundsätzlich falsch, sondern nur für einen bestimmten Vorgang ungeeignet. 422 zeigt semantische Fehler in der Kommunikation zwischen Client und Server an.

502 – Ungültige Antwort

Ein 502 Bad Gateway Fehlercode bedeutet, dass der Server eine ungültige Antwort von einem Upstream-Server erhalten hat und daher nicht antworten kann.

Mögliche Ursachen:

  • Upstream-Server ist nicht erreichbar
  • Upstream-Server schickt ungültige Daten
  • Software-Fehler im Proxy

Ähnlich wie bei 504 Timeout liegt das Problem nicht direkt beim angefragten Server, sondern bei einer dahinter liegenden Komponente.

502 zeigt eine vorübergehende Störung durch einen fehlerhaften Upstream-Server an.

400 – Ungültige Anfrage

Der 400 Bad Request Fehlercode besagt, dass die Anfrage Syntaxfehler aufweist oder semantisch ungültig ist.

Beispiele:

  • Falsches HTTP-Verb (GET statt POST)
  • Fehlende Felder oder Parameter
  • Ungültige JSON-Syntax
  • Unbekannter API-Endpunkt

400 heißt, dass die Anfrage vom Server nicht interpretiert werden konnte. Entweder Fehler vom Client oder die API wurde geändert. 400 zeigt grundsätzliche Probleme mit der Request an.

409 – Konflikt

409 Conflict bedeutet, dass die Anfrage aufgrund des aktuellen Server-Zustands nicht bearbeitet werden konnte.

Konkrete Fälle sind:

  • Ressource existiert schon
  • Optimistisches Locking schlug fehl
  • Vorbedingung verletzt
  • Duplikat

Der Konflikt ist also, dass die Realität auf dem Server nicht dem entspricht, was der Client gemäß Anfrage erwartet oder voraussetzt.

409 zeigt einen Zustandskonflikt zwischen Client-Annahme und Server-Zustand an.

418 – Ich bin eine Teekanne

Der 418 I’m a Teapot Code ist eine Easter Egg Referenz auf einen Aprilscherz. 418 besagt, dass der Server eine Teekanne ist.

Dieser Fehlercode wird als Scherz in einigen APIs implementiert in Anlehnung an RFC 2324 Hyper Text Coffee Pot Control Protocol.

418 demonstriert die Menschen und Humor hinter dem Code. Nicht alle Fehlermeldungen sind technisch ernst gemeint.

429 – Too Many Requests

Der 429 Status Code zeigt an, dass der Client eine Ressource zu oft und schnell angefragt hat und gedrosselt werden soll.

Gründe können sein:

  • API Throttling
  • Rate Limit überschritten
  • DDoS Schutz

429 dient also dem Schutz vor Überlastung durch Clients. Die Meldung sagt dem Client, dass er sich zurücknehmen und Requests reduzieren soll.

Zu viele Anfragen zu häufig können Server performance beeinträchtigen und werden daher beschränkt.

308 – Permanente Weiterleitung

308 Permanent Redirect teilt dem Client mit, dass die angefragte Resource dauerhaft unter einer neuen URL erreichbar ist.

Der Client sollte zukünftige Requests direkt gegen die neue URL richten und die alte nicht mehr verwenden.

Gründe für eine 308 Weiterleitung:

  • Domain-Umzug
  • Neustrukturierung
  • Dauerhafte Ressourcen-Migration

308 kennzeichnet also eine neue kanonische URL für eine dauerhaft umgezogene Resource.

307 – Temporäre Weiterleitung

307 Temporary Redirect ist ähnlich zu 308, allerdings nur temporär. Der Client sollte die Anfrage wiederholen, dabei aber der Weiterleitung zur neuen URL folgen.

Anlässe für 307:

  • Wartungsarbeiten
  • Vorübergehender Traffic-Routing
  • Load Balancing

307 zeigt eine vorübergehende, nicht-permanente Weiterleitung an. Der Client soll es später noch einmal mit der Original-URL probieren.

300er Status Codes

Status Codes der 300er Klasse zeigen alle verschiedene Arten von Redirects und Weiterleitungen an:

  • 301 – Permanent Redirect
  • 302 – Temporärer Redirect
  • 303 – Redirect nach GET
  • 304 – Unmodified / Cache
  • 305 – Use Proxy
  • 306 – nicht mehr verwendet
  • 307 – Temporary Redirect
  • 308 – Permanent Redirect

Redirects gehören zu den häufigsten Status Codes und leiten Clients zu neuen Target-URLs weiter.

500 – Interner Fehler

500 Internal Server Error zeigt einen allgemeinen Fehler auf Server-Seite an.

Mögliche Ursachen:

  • Software-Bug
  • Fehlerhafte Konfiguration
  • Systemressourcenprobleme
  • Unerwartete Ausnahmen

Im Gegensatz zu Client-seitigen Fehlern wie 400 oder 404 liegt das Problem hier innerhalb des Servers.

Details sind oft unbekannt, da die Fehlermeldung aus Sicherheitsgründen standardisiert ist. 500er Errors deuten auf Code- oder Systemprobleme hin.

501 – Nicht implementiert

Der 501 Not Implemented Statuscode besagt, dass der Server die angeforderte Funktionalität nicht unterstützt.

Beispiele:

  • API Route existiert nicht
  • HTTP-Methode nicht implementiert
  • Bestimmte Query-Parameter werden nicht akzeptiert

Im Gegensatz zu 405Method Not Allowed ist hier die Funktionalität grundsätzlich nicht vorhanden statt nur deaktiviert.

501 tritt auf, wenn Serverseitig etwas nicht implementiert wurde, was der Client erwartet.

502 – Bad Gateway

Ein 502 Bad Gateway Fehler zeigt an, dass der Server eine ungültige Antwort von einem Upstream-Server erhalten hat.

Mögliche Ursachen:

  • Upstream-Server ist nicht erreichbar
  • Upstream-Server schickt ungültige Daten
  • Software-Fehler im Proxy

Ähnlich wie bei 504 Timeout liegt das Problem nicht direkt beim angefragten Server, sondern bei einer dahinter liegenden Komponente.

502 zeigt eine vorübergehende Störung durch einen fehlerhaften Upstream-Server.

503 – Service nicht verfügbar

Der 503 Service Unavailable Statuscode sagt aus, dass der Service vorübergehend nicht verfügbar ist.

Beispiele:

  • Wartungsarbeiten
  • Überlastung
  • Server-Neustart
  • Software-Update

Anders als bei einem Timeout ist der Service hier generell nicht einsatzfähig.

503 deutet auf eine geplante oder ungeplante Nichterreichbarkeit hin.

504 Gateway Timeout

Der 504 Gateway Timeout Fehler zeigt an, dass ein Upstream-Server nicht rechtzeitig geantwortet hat.

Ursachen können sein:

  • Überlastung
  • Netzwerkprobleme
  • Fehlkonfiguration
  • Softwarefehler

Im Gegensatz zu 5xx Errors liegt das Problem nicht beim angefragten Server selbst.

Gateway Timeout tritt bei Upstream-Latenz auf und ist oft vorübergehend.

Weitere wichtige Status Codes

  • 201 Created – Resourcen wurde erfolgreich erstellt
  • 202 Accepted – Anfrage akzeptiert, wird asynchron verarbeitet
  • 204 No Content – Erfolgreiche Ausführung, keine Rückgabe
  • 206 Partial Content – Bereich einer Ressource als Antwort
  • 301 Moved Permanently – Dauerhafte Weiterleitung
  • 303 See Other – Redirect nach GET
  • 304 Not Modified – Resourcen wurde nicht verändert
  • 307 Temporary Redirect – Vorübergehende Weiterleitung
  • 400 Bad Request – Ungültige, fehlerhafte Anfrage
  • 401 Unauthorized – Authentifizierung erforderlich
  • 403 Forbidden – Client nicht berechtigt
  • 404 Not Found – Resource existiert nicht
  • 405 Method Not Allowed – HTTP Methode nicht erlaubt
  • 408 Request Timeout – Anfrage hat Zeitlimit überschritten
  • 413 Payload Too Large – Daten zu umfangreich
  • 414 URI Too Long – URL über Grenzwert
  • 415 Unsupported Media Type – Falsches Dateiformat
  • 417 Expectation Failed – Erwartung konnte nicht erfüllt werden
  • 426 Upgrade Required – Protokollwechsel nötig
  • 451 Unavailable For Legal Reasons – Resourcen aus rechtlichen Gründen gesperrt
  • 520 Web Server Returned An Unknown Error – Unbekannter Webserver-Fehler
  • 521 Web Server Is Down – Webserver nicht erreichbar
  • 525 SSL Handshake Failed – Fehler bei SSL-Handshake

Häufig gestellte Fragen

Was bedeutet der 403 Forbidden Fehler?

403 bedeutet, dass die Anfrage nicht autorisiert ist – der Client hat keine Zugriffsberechtigung auf die Resource.

Wann erscheint der 401 Unauthorized Statuscode?

401 zeigt an, dass der Client nicht authentifiziert ist. Er muss sich zunächst mit Login-Daten authentisieren.

Was sagt der 400 Bad Request Fehler aus?

400 besagt, dass die gesendete Anfrage ungültige Syntax aufweist oder semantisch falsch ist.

Wodurch kommt ein 504 Timeout Fehler zustande?

504 bedeutet, dass ein Upstream-Server nicht rechtzeitig geantwortet hat und ein Timeout aufgetreten ist.

Was ist der Unterschied zwischen 503 und 504?

503 ist ein allgemeiner Service Unavailable Error. 504 ist ein spezifischer Timeout Fehler durch einen Upstream-Server.

Wofür steht der 308 Statuscode?

308 signalisiert eine permanente Weiterleitung zu einer neuen URL.

Was besagt der 500 Internal Server Error?

500 zeigt einen allgemeinen Server-seitigen Fehler an, Details sind unbekannt.

Wann tritt der 502 Bad Gateway Fehler auf?

502 bedeutet, dass der Server eine ungültige Antwort von einem Upstream-Server bekommen hat.

Fazit

Fehlercodes machen Probleme in Software sichtbar. Hinter Kryptischem wie 403, 502 oder 307 verbergen sich meist aufschlussreiche Bedeutungen.

Server Errors zeigen Programmierfehler an. Client Errors deuten auf falsche Bedienung hin. Redirects leiten zu neuen Zielen weiter.

Fehlermeldungen analysieren hilft, die Funktionsweise von Software zu verstehen. Statt Code-Zahlen auswendig zu lernen, ist es wichtiger, die Prinzipien dahinter zu begreifen.

Dieser Artikel hat gängige Fehler erklärt. Kennen Sie weitere aussagekräftige Meldungen? Welche Fehlercodes und -meldungen sind Ihnen schon begegnet? Teilen Sie Ihre Erfahrungen gerne in den Kommentaren!