Meine Webanwendung verfügt über eine Anmeldeseite, auf der Authentifizierungsdaten über einen AJAX-Aufruf übermittelt werden. Wenn der Benutzer den richtigen Benutzernamen und das richtige Passwort eingibt, ist alles in Ordnung. Wenn nicht, geschieht Folgendes:
- Der Webserver stellt fest, dass die Anmeldeinformationen im Header nicht erfolgreich authentifiziert werden, obwohl die Anforderung einen wohlgeformten Autorisierungsheader enthielt.
- Der Webserver gibt einen 401-Statuscode zurück und enthält einen oder mehrere WWW-Authenticate-Header, in denen die unterstützten Authentifizierungstypen aufgeführt sind.
- Der Browser erkennt, dass die Antwort auf meinen Aufruf des XMLHttpRequest-Objekts 401 ist und die Antwort WWW-Authenticate-Header enthält. Daraufhin wird ein Authentifizierungsdialog angezeigt, in dem Sie erneut nach dem Benutzernamen und dem Kennwort gefragt werden.
Dies ist bis Schritt 3 in Ordnung. Ich möchte nicht, dass der Dialog angezeigt wird. Ich möchte die 401-Antwort in meiner AJAX-Rückruffunktion verarbeiten. (Zum Beispiel durch Anzeigen einer Fehlermeldung auf der Anmeldeseite.) Ich möchte, dass der Benutzer seinen Benutzernamen und sein Kennwort erneut eingibt, aber ich möchte, dass er mein freundliches, beruhigendes Anmeldeformular sieht, nicht die hässliche Standardeinstellung des Browsers Authentifizierungsdialog.
Im Übrigen habe ich keine Kontrolle über den Server, daher ist es keine Option, einen benutzerdefinierten Statuscode (dh etwas anderes als einen 401) zurückzugeben.
Kann ich den Authentifizierungsdialog auf irgendeine Weise unterdrücken? Kann ich insbesondere das Dialogfeld "Authentifizierung erforderlich" in Firefox 2 oder höher unterdrücken? Gibt es eine Möglichkeit, das Dialogfeld Mit [Host] verbinden in IE 6 und höher zu unterdrücken ?
Bearbeiten
Zusätzliche Informationen des Autors (18. September):
Ich sollte hinzufügen, dass das eigentliche Problem beim Auftauchen des Authentifizierungsdialogs des Browsers darin besteht, dass dem Benutzer nicht genügend Informationen zur Verfügung gestellt werden.
Der Benutzer hat gerade einen Benutzernamen und ein Passwort über das Formular auf der Anmeldeseite eingegeben. Er glaubt, beide korrekt eingegeben zu haben, und hat auf die Schaltfläche "Senden" geklickt oder die Eingabetaste gedrückt. Er erwartet, dass er auf die nächste Seite weitergeleitet wird oder dass ihm mitgeteilt wird, dass er seine Informationen falsch eingegeben hat und es erneut versuchen sollte. Stattdessen wird ihm jedoch ein unerwartetes Dialogfeld angezeigt.
Der Dialog macht keine Anerkennung der Tatsache , dass er gerade tat , einen Benutzernamen und ein Passwort eingeben. Es ist nicht klar, dass es ein Problem gab und dass er es erneut versuchen sollte. Stattdessen werden dem Benutzer im Dialogfeld kryptische Informationen wie "Die Site sagt: ' [Realm] '" angezeigt . Wobei [Realm] ein kurzer Realm-Name ist, den nur ein Programmierer lieben kann.
Webbrowser-Designer nehmen zur Kenntnis: Niemand würde fragen, wie der Authentifizierungsdialog unterdrückt werden kann, wenn der Dialog selbst einfach benutzerfreundlicher wäre. Der gesamte Grund, warum ich ein Anmeldeformular mache, ist, dass unser Produktmanagement-Team die Authentifizierungsdialoge der Browser zu Recht für schrecklich hält.