HTTP 401 - Was ist ein geeigneter WWW-Authenticate-Header-Wert?
Die Anwendung an der ich arbeite hat im moment einen session-timeout-Wert. Wenn der Benutzer nicht interagiert länger als dieser Wert, wird die nächste Seite, die Sie versuchen zu laden, werden Sie aufgefordert, sich anzumelden.
Alle Anfragen geleitet werden durch diesen Mechanismus, der beinhaltet AJAX-Aufrufe. Ursprünglich waren wir versenden einen 200-header mit der login Seite, das bringt einige Probleme mit AJAX da der code ausgeführt wird, wenn ein 200-Antwort gesendet wird, und die meisten Daten zurück gesendet, von diesen RPC-Aufrufe ist JSON-oder raw-JavaScript-Code wird ausgewertet (fragt nicht :|).
Ich habe vorgeschlagen, ein 401 ist besser, da unsere JSON-parser nicht versuchen, zu konsumieren, ein HTML-login-Seite.. 🙂
Wenn das Lesen der specjedoch bemerkte ich, dass der WWW-Authenticate
Feld muss auch gesendet werden.
Was ist ein guter Wert für dieses Feld? Wird Application Login
ausreichen?
InformationsquelleAutor der Frage Will Morgan | 2009-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bei der Angabe von HTTP-Basic-Authentifizierung wir wieder so etwas wie:
In der Erwägung, dass
Basic
ist die Regelung, und der Rest ist sehr abhängig von diesem System. In diesem Fall Reich nur liefert der browser eine wörtliche, die angezeigt werden können, um den Benutzer bei der Aufforderung zur Eingabe der Benutzer-id und Passwort.Du bist offensichtlich nicht mit Basic, aber seit es keinen Sinn, mit session-Ablauf bei " Basic Auth verwendet wird. Ich nehme an, du bist mit irgendeiner form von Forms based authentication.
Aus der Erinnerung, Windows Challenge Response-verwendet ein anderes Schema und andere Argumente.
Der trick ist, dass es an den browser, um zu bestimmen, welche Systeme unterstützt werden und wie er darauf antwortet.
Mein Bauchgefühl, wenn Sie mit forms based authentication ist, bleiben mit dem 200 + relogin Seite, sondern fügen Sie einen benutzerdefinierten header, den die browser ignorieren, aber Ihre AJAX identifizieren können.
Für einen wirklich guten User + AJAX Erfahrung, bekomme das Skript hängen, um die AJAX-Anfrage festgestellt, dass die Sitzung abgelaufen, Feuer aus einem relogin Anfrage über ein popup, und bei Erfolg wird, übermitteln das original AJAX-request und normal weiter zu tragen.
Vermeiden, die betrügen, nur bekommt das Skript zu schlagen die Website alle 5 Minuten zu halten, die session am Leben Ursache, dass eben Niederlagen der Punkt des Sitzungs-Ablauf.
Die andere alternative ist das brennen der AJAX-Anfrage aber, dass ist eine schlechte user experience.
InformationsquelleAutor der Antwort Swanny
Nein, müssen Sie zum angeben der Authentifizierungsmethode (in der Regel "Basic") und " authentication realm. Sehen http://en.wikipedia.org/wiki/Basic_access_authentication ein Beispiel für eine Anforderung und Antwort.
Vielleicht wollen Sie auch zu Lesen RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication.
InformationsquelleAutor der Antwort Pär Wieslander
Wenn die Benutzer-session Timeout, den ich zurück senden einer HTTP-status-code 204. Beachten Sie, dass die HTTP-204-status enthält keine Inhalte. Auf der client-Seite habe ich hierzu:
Hier ist die Reload () - Funktion:
InformationsquelleAutor der Antwort Smurfling