Nixwisser: Abbrechen-Button im HTTP-Auth-Dialog abfragen

Beitrag lesen

Also bevor wir (weiter) aneinander vorbeireden:

Der Ablauf ist folgendermaßen:

  1. Browser, Anfrage: http://x
  2. Server, Antwort: 401 und "<html>..Authentifizierung nötig..bla..bla..</html>"
  3. Browser, Aktion: Login-Dialog anzeigen

4a) Benutzer drückt Ok
    5)Browser, Anfrage: http://x mit Zugangsdaten
    6)Server, Antwort: "Zugangsdaten falsch" (mit 401 oder 403), oder http://x (mit 200) ausgeben

4b) Benutzer drückt Abbrechen
    5) Browser zeigt Seite an, die Server in Schritt 2) geschickt hat.

Daraus ergeben sich viereinhalb Fälle, die Du im Authentifzierungsabschnitt bearbeiten musst:

1. Neuanforderung
Erkennung: auth-Variablen existieren nicht, IP unbekannt (oder kein Cookie gesetzt).
Aktion: 401 (Authentifizierung nötig) und Seite schicken (Inhalt siehe unten).
Browser: Zeigt Login-Dialog, mitgeschickte Seite wird (üblicherweise) nicht angezeigt.

2. Abbrechen gedrückt
Erkennung: Nicht möglich, da der Browser keine weitere Anfrage an den Server schickt.
Aktion: Nicht möglich, da keine Erkennung.
Browser: Zeigt die Seite an, die beim letzten 401 geschickt wurde.

Dies ist der "halbe" Fall, weil der Server nichts davon mitbekommt.

3. Ok ohne Zugangsdaten gedrückt
Erkennung: auth-Variablen existieren nicht oder sind leer, und die IP ist von vorangehendem 401 bekannt (oder ein Cookie ist gesetzt).
Aktion: 403 (Zugang verweigert), 401 (Authentifizierung nötig) oder 200 (Ok), jeweils mit entsprechender Seite.
Browser: 403: zeigt Seite an, 401: zeigt Login-Dialog an, 200: zeigt Seite an.

4. Ok mit falschen Zugangsdaten gedrückt
Erkennung: auth-Daten falsch.
Aktion: 403 (Zugang verweigert) oder 401 (Authentifizierung nötig), jeweils mit entsprechender Seite.
Browser: 403: zeigt Seite an, 401: zeigt Login-Dialog an.

5. Ok mit richtigen Zugangsdaten gedrückt
Erkennung: auth-Daten richtig.
Aktion: 200 (Ok) und gewünschte Seite schicken.
Browser: Zeigt Seite an.

Wichtig ist Punkt 2, nämlich dass Du keine Möglichkeit hast, direkt auf den Abbruch zu reagieren. Du kannst lediglich vorausschauend mit den 401-Fehlern bei 1, 3 und 4 einen sowohl dem Abbruch als auch der Authentifizierungsaufforderung angemessenen Text liefern. Das könnte in Deinem Fall auch die gewünschte Seite sein, so, wie man sie ohne Authentifizierung benutzen kann, mit dem Hinweis "Sie arbeiten unangemeldet" statt "Angemeldet als Otto Normaluser".

Wenn ich bei dem weißen Fenster (also im "Abbrechen"-Fall) die Adressleiste markiere und Return drücke, wird auf die richtige Fehlerseite weitergeleitet. Das muß irgendwas mit den Headern und der Weiterleitung zu tun haben.

Bitte _keine_ Weiterleitungen, dafür besteht keine Veranlassung.