Ви можете це зробити повністю у JavaScript:
IE має (давно) стандартний API для очищення кешу базового аутентифікації:
document.execCommand("ClearAuthenticationCache")
Слід повернути істину, коли вона працює. Повертає помилкове, невизначене або відображається в інших веб-переглядачах.
Нові браузери (станом на грудень 2012 року: Chrome, FireFox, Safari) мають "магічну" поведінку. Якщо вони бачать успішний базовий запит на аутентифікацію з будь-яким фальшивим іншим ім'ям користувача (скажімо logout
), вони очищають кеш даних облікових даних і, можливо, встановлюють це нове ім'я фальшивого користувача, для чого потрібно переконатися, що це неправдиве ім’я користувача для перегляду вмісту.
Основний приклад цього:
var p = window.location.protocol + '//'
// current location must return 200 OK for this GET
window.location = window.location.href.replace(p, p + 'logout:password@')
"Асинхронний" спосіб виконання вищезгаданого - це зробити дзвінок AJAX, використовуючи logout
ім'я користувача. Приклад:
(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*/)
Ви також можете зробити його закладкою:
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*/);