คุณสามารถทำได้ทั้งหมดใน JavaScript:
IE มี API มาตรฐาน (เป็นเวลานาน) สำหรับล้างแคชการตรวจสอบสิทธิ์พื้นฐาน:
document.execCommand("ClearAuthenticationCache")
ควรกลับมาจริงเมื่อมันทำงาน ส่งคืน false, undefined หรือระเบิดในเบราว์เซอร์อื่น
เบราว์เซอร์ใหม่ (ณ เดือนธันวาคม 2555: 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*/)
คุณสามารถทำให้มันเป็น bookmarklet ได้เช่นกัน:
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*/);