Ich konnte erfolgreich eine URL hinter einem Verzeichnis in Apache, das mit Basic Authentication (htpasswd, etc.) geschützt ist, aufrufen. Die Ajax-GET-Anfrage funktioniert normal und gibt den geschützten Inhalt:JavaScript-Weiterleitungs-URL mit Autorisierungsheader
var encoded = Base64.encode(username + ':' + password);
$.ajax({
url: "/app/test",
type: "GET",
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + encoded);
},
success: function() {
window.location.href = '/app/test.html';
}
});
Meine ursprüngliche Annahme war, dass, wenn die Web-Sitzung erfolgreich eine Anforderung autorisiert hätte, wäre es möglich, die Umleitung in dem ‚Erfolg‘ Block zu machen, ohne Benutzer zu fragen Anmeldeinformationen. Wenn dieser Codeblock aufgerufen wird, hat der Benutzer Benutzername und Kennwort in einer nicht geschützten Umgebung eingegeben. Wenn die Umleitung jedoch aufgerufen wird, öffnet der Browser das Anmelde-/Passwortfenster.
Alle Vorschläge, wie ich eine Sitzung mit der Basic Authorization vorautorisieren könnte, die von den Benutzern bereitgestellt wurde?
funktioniert es, wenn Sie mit AJAX authentifizieren 'headers' statt' beforeSend' Einstellung? Zum Beispiel: 'headers: {" Authorization ":" Basic "+ encoded}' – Stef
Es ist schon eine Weile her, ich glaube ich habe es mit den gleichen Ergebnissen getestet. – hcabral
Es scheint so ist, wie [Authorization Header funktioniert] (http://stackoverflow.com/questions/20617720/why-doesnt-the-browser-reuse-the-authorization-headers-after-an-authenticated-x) für den Fall von AJAX. Cookies werden automatisch mit Anfragen gesendet, und Sie können diese auf dem Server lesen, um die Autorisierung zu überprüfen (müssen XSS, CSRF berücksichtigen). Gibt es einen bestimmten Grund, warum Sie die Standardauthentifizierung verwenden möchten? –