Frage

Ich implementieren eine HttpRequestValidationException in meinem Application_Error-Handler und möchte, wenn möglich, eine benutzerdefinierte Nachricht anzeigen.

Jetzt denke ich über den StatusCode nach.In meinem aktuellen Beispiel wird eine 200 gesendet, was meiner Meinung nach nicht getan werden sollte.Ich würde stattdessen gerne die (meiner Meinung nach) passendere 400 Bad Request senden.Gleichzeitig möchte ich jedoch Response.Write verwenden, um eine benutzerdefinierte Nachricht einzugeben.Firefox zeigt es ordnungsgemäß an, aber IE7 zeigt mir die standardmäßige, nicht hilfreiche Internet Explorer-Fehlerseite an.

Einerseits vermute ich, dass Internet Explorer einfach davon ausgeht, dass alles <> 200 einfach keinen „guten“ Inhalt hat, und das RFC ist nicht wirklich klar Hier.

Ich frage mich also nur: Ist das Senden eines HTTP 200 für eine Fehlerseite, die durch eine HttpRequestValidationException verursacht wird, eine gute Vorgehensweise oder nicht?Gibt es gute Alternativen?

War es hilfreich?

Lösung

Ein HTTP 200-Antwortcode weist nicht auf einen Fehler hin.Es zeigt an, dass alles in Ordnung war.Sie sollten für einen Fehler keinen Antwortcode 200 verwenden.

Internet Explorer zeigt die Seite „Freundliche Fehler“ an, wenn die Antwort weniger als 512 Byte umfasst.Hier finden Sie mehr zu diesem Thema: http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx,

Andere Tipps

Nein, es ist sicherlich keine gute Praxis.2XX-Statuscodes bedeuten (unter anderem), dass die Die Anfrage ist gültig.Das ist genau das Gegenteil zum Auslösen einer HttpRequestValidationException.

Leider weiß ich nicht, wie ich dafür sorgen soll, dass sich der IE richtig verhält.Ein etwas besserer Weg, als eine 200 zu senden, wäre, sie auf eine Fehlerseite umzuleiten, aber immer noch alles andere als perfekt.

Internet Explorer zeigt eine sogenannte „freundliche HTTP-Fehlermeldung“ an, wenn die Antwort 4xx oder 5xx ist.Diese Option kann vom Benutzer im Dialogfeld „Tools.Options.Advanced[Browsing]“ des IE deaktiviert werden.

Das Senden einer 200 für eine Fehlerseite ist im Allgemeinen eine schlechte Praxis.Eine Alternative wäre, eine gültige „Fehler“-Seite zu haben angeblich um Fehlermeldungen anzuzeigen (also wäre eine 200 in Ordnung) und verwenden Sie dann eine 3xx-Weiterleitung zu dieser Seite.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top