Wie verhindere ich, Firefox von Eingabeaufforderung für Benutzername / Passwort mit HTTP Basic Auth mit JQuery AJAX?
-
06-09-2019 - |
Frage
Ich schreibe eine Browser-Seite dynamische Funktionalität und Verwendung von HTTP Basic Auth einige Ressourcen zu schützen. Die Benutzererfahrung ist sehr wichtig und ist sehr individuelle.
Hier ist ein einfacher Test JQuery Methode, die prüft schließlich, wenn ein Benutzer die richtigen Anmeldeinformationen in einer Form geliefert hat:
$(document).ready(function() {
$("#submit").click(function() {
var token = Base64.encode($('#username').val() + ':' + $('#password').val());
$.ajax({
url: '/private',
method: 'GET',
async: false,
beforeSend: function(req) {
req.setRequestHeader('Authorization', 'test:password');
},
error: function(request, textStatus, error) {
if (request.status == 401) {
alert('401');
}
}
});
return false;
});
});
Wenn sie nicht erlaubt sind /private
zugreifen zu können, im Moment sollten sie nur die Warnmeldung sehen. Doch auf Firefox, ein Browser-Login-Formular zur Verfügung gestellt erscheint (erneut zu versuchen mit neuen Anmeldeinformationen). Safari tut dies nicht.
Wir wollen das Erfahrung mit benutzerdefinierten Formularen steuern, Überblendungen, Übergänge etc. Wie kann ich Firefox Standard-Box aus wird gezeigt? (Wenn dies ein Problem sein, wenn wir für das Internet Explorer zu testen, würde ich gerne Lösungen dort hören, auch.)
Lösung
Falls Sie haben es nicht gelesen:
Wie kann ich unterdrücke den Authentifizierungsdialog des Browsers?
Sieht nicht allzu viel versprechend:)
Andere Tipps
Die Lösung ist der WWW-Authenticate
Header auf etwas anderes als Basic
einzustellen. Zum Beispiel setzen Sie es an:
WWW-Authenticate: None
oder
WWW-Authenticate: FormBased
Wenn Sie verwenden formularbasierte Anmeldung. Dann wird der Browser Sie kein Login-Fenster zeigen.
Leider bin ich das gleiche Problem trifft hier.
Meiner Meinung nach, Browser sollte keine Aufforderung für einen xmlhttprequest geben. Ich wünschte wirklich, jemand würde schieben, dass die Ursache der Menschen wirklich wollen, sind zu jQuery für ihre Auth Bedürfnisse zu bewegen.
hier Nun ist die Hilfe, die ich Ihnen geben kann, fand ich dieses Ding jQuery Digest, ich habe keine Ahnung, was es wirklich tut oder etwas, aber wenn jemand diesen Code, den richtigen Weg nehmen könnten, könnten wir ein jquery verdauen Auth-System haben .
https://www.openhub.net/p/digestj
ich mit diesem praktischen neuen AuthDigestDomain Option denken würde, könnten wir das obige Skript geschrieben haben oder was auch immer und haben die gesicherten Bereich ‚verbunden‘ zusammen und wir konnten Vergangenheit dieses Problem ein für alle Mal bekommen. Nun ja ... viel Glück =)
Ich fand irgendwo eine Abhilfe dieses Authentifizierungs Popup-Ausgabe.
WWW-Authenticate: None
funktioniert nicht für mich, aber ich habe hinzugefügt
'Authorization': 'Basic'
zu dem Kopf- und es wirkt wie ein Zauber.