Statuscode 412 Precondition Failed
Inhaltsverzeichnis
Was bedeutet der Statuscode 412 Precondition Failed?
Wenn man auf einer Webseite die Fehlermeldung 412 Precondition Failed erhält, bedeutet dies, dass die angeforderte Seitenanfrage mit einer der Sicherheitsregeln kollidiert ist, die über den Server implementiert wurden. Diese Regeln dienen im Allgemeinen dazu, die über den Server gehosteten Websites vor schädlichen Aktivitäten zu schützen.
HTTP-Statuscodes sind Standardantwortcodes, die von Website-Servern im Internet angegeben werden. Mithilfe der Codes kann die Ursache des Problems ermittelt werden, wenn eine Webseite oder eine andere Ressource nicht ordnungsgemäß geladen wird. Der Begriff HTTP-Statuscode ist eigentlich der allgemeine Begriff für die HTTP-Statuszeile, die sowohl den HTTP-Statuscode als auch den HTTP-Grundsatz enthält. HTTP-Statuscodes werden manchmal zudem als Browserfehlercodes oder Internetfehlercodes bezeichnet.
Die Ursache für den Statuscode 412
Die wahrscheinlichste Ursache der 412 Precondition Failed Antwort ist eine mod_security-Einstellung. Das Modul mod_security sendet diese Antwort, wenn ein Teil der Webanforderungsdaten eines der Server wahrscheinlich bösartig ist. Um diese Sicherheitsfunktion zu deaktivieren, muss die folgende .htaccess-Direktive verwendet werden: SecFilterEngine Aus.
Wenn HTTP verwendet wird, sollte zudem immer der HTTP-Spezifikation gefolgt werden. Der Code 412 Precondition Failed sollte nur verwendet werden, wenn eine Vorbedingung (z.B. If-Match) das Fehlschlagen verursacht hat, während der Statuscode 409 verwendet werden sollte, wenn die Entität einen Konflikt verursachen würde (die HTTP-Spezifikation selbst verweist auf dieses Verhalten in der Definition von 409). Daher erwartet ein Client, der ETags nicht sendet, keinen Statuscode 412. Umgekehrt wird ein Client, der ETags sendet, nicht verstehen, dass ETags einen 409 Fehlercode verursachen.
Wenn beim Versuch der Fehlerbehebung das Problem auftritt, dass das Datenbankschema nicht geändert werden kann, hindert dies einen nicht daran, direkt in der HTTP-Server-Schicht, die Version aus der Database-Repräsentation zu extrahieren und sie in den ETag einzufügen, und dann auf dem Weg den If-Match-Header zu nehmen und ihn zurück in das Versionsfeld zu geben. Es ist jedoch nicht verboten, es im Körper der Entität selbst zu tun. Es erfordert lediglich, dass das Konzept und seine Funktionsweise erklärt wird, während man mit der ETag-Lösung nur auf die HTTP-Spezifikation verweisen kann.
Sie haben noch Fragen?