Sie können dies vollständig in JavaScript tun:
IE verfügt (seit langem) über eine Standard-API zum Löschen des Cache für die Standardauthentifizierung:
document.execCommand("ClearAuthenticationCache")
Sollte true zurückgeben, wenn es funktioniert. Gibt entweder false, undefined oder explodiert in anderen Browsern zurück.
Neue Browser (Stand Dezember 2012: Chrome, FireFox, Safari) verhalten sich "magisch". Wenn sie eine erfolgreiche grundlegende Authentifizierungsanforderung mit einem falschen anderen Benutzernamen sehen (sagen wir logout
), löschen sie den Cache für Anmeldeinformationen und legen ihn möglicherweise für diesen neuen falschen Benutzernamen fest, den Sie sicherstellen müssen, dass es sich nicht um einen gültigen Benutzernamen zum Anzeigen von Inhalten handelt.
Grundlegendes Beispiel dafür ist:
var p = window.location.protocol + '//'
// current location must return 200 OK for this GET
window.location = window.location.href.replace(p, p + 'logout:password@')
Eine "asynchrone" Möglichkeit, dies zu tun, besteht darin, einen AJAX-Aufruf unter Verwendung des logout
Benutzernamens durchzuführen. Beispiel:
(function(safeLocation){
var outcome, u, m = "You should be logged out now.";
// IE has a simple solution for it - API:
try { outcome = document.execCommand("ClearAuthenticationCache") }catch(e){}
// Other browsers need a larger solution - AJAX call with special user name - 'logout'.
if (!outcome) {
// Let's create an xmlhttp object
outcome = (function(x){
if (x) {
// the reason we use "random" value for password is
// that browsers cache requests. changing
// password effectively behaves like cache-busing.
x.open("HEAD", safeLocation || location.href, true, "logout", (new Date()).getTime().toString())
x.send("")
// x.abort()
return 1 // this is **speculative** "We are done."
} else {
return
}
})(window.XMLHttpRequest ? new window.XMLHttpRequest() : ( window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : u ))
}
if (!outcome) {
m = "Your browser is too old or too weird to support log out functionality. Close all windows and restart the browser."
}
alert(m)
// return !!outcome
})(/*if present URI does not return 200 OK for GET, set some other 200 OK location here*/)
Sie können es auch zu einem Lesezeichen machen:
javascript:(function(c){var a,b="You should be logged out now.";try{a=document.execCommand("ClearAuthenticationCache")}catch(d){}a||((a=window.XMLHttpRequest?new window.XMLHttpRequest:window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):void 0)?(a.open("HEAD",c||location.href,!0,"logout",(new Date).getTime().toString()),a.send(""),a=1):a=void 0);a||(b="Your browser is too old or too weird to support log out functionality. Close all windows and restart the browser.");alert(b)})(/*pass safeLocation here if you need*/);