इसका सरल उत्तर यह है कि आप विश्वसनीय रूप से http-प्रमाणीकरण से लॉग आउट नहीं कर सकते हैं।
दीर्घ उत्तर:
Http-Cort (बाकि HTTP युक्ति की तरह) स्टेटलेस होना है। तो "लॉग इन" या "लॉग आउट" होना वास्तव में एक अवधारणा नहीं है जो समझ में आता है। इसे देखने का बेहतर तरीका यह है कि प्रत्येक HTTP रिक्वेस्ट के लिए (और एक पेज लोड आमतौर पर कई अनुरोधों को याद रखें), "क्या आपको वह करने की अनुमति है जो आप अनुरोध कर रहे हैं?"। सर्वर प्रत्येक अनुरोध को नए और किसी भी पिछले अनुरोधों के साथ असंबंधित देखता है।
ब्राउज़रों ने आपके द्वारा पहले 401 पर बताई गई क्रेडेंशियल्स को याद रखने के लिए चुना है, और बाद के अनुरोधों पर उपयोगकर्ता की स्पष्ट अनुमति के बिना उन्हें फिर से भेजें। यह उपयोगकर्ता को "लॉग इन / लॉग आउट" मॉडल देने की कोशिश है जो वे उम्मीद करते हैं, लेकिन यह पूरी तरह से एक कीचड़ है। यह ब्राउज़र है जो राज्य की इस दृढ़ता का अनुकरण कर रहा है। वेब सर्वर इससे पूरी तरह अनभिज्ञ है।
तो "लॉगिंग आउट", HTTP- के संदर्भ में विशुद्ध रूप से ब्राउज़र द्वारा प्रदान किया गया एक सिमुलेशन है, और इसलिए सर्वर के अधिकार से बाहर है।
हां, कीचड़ हैं। लेकिन वे रेस्टफुल-नेस को तोड़ते हैं (यदि आपके लिए यह मूल्य है) और वे अविश्वसनीय हैं।
यदि आपको अपनी साइट प्रमाणीकरण के लिए एक लॉग-इन / लॉग-आउट मॉडल की आवश्यकता है, तो सबसे अच्छी शर्त एक ट्रैकिंग कुकी है, जिसमें सर्वर पर संग्रहीत स्टेट की दृढ़ता बनी रहती है (mysql, sqlite, flatfile, आदि)। इसके लिए सभी अनुरोधों का मूल्यांकन करना होगा, उदाहरण के लिए, PHP के साथ।