La semplice risposta è che non è possibile disconnettersi in modo affidabile dall'autenticazione http.
La risposta lunga:
Http-auth (come il resto delle specifiche HTTP) è pensato per essere senza stato. Quindi essere "loggato" o "disconnesso" non è davvero un concetto che ha senso. Il modo migliore per vederlo è chiedere, per ogni richiesta HTTP (e ricordare che un caricamento di pagina è di solito più richieste), "ti è permesso fare quello che stai richiedendo?". Il server vede ogni richiesta come nuova e non correlata a alcuna richiesta precedente.
I browser hanno scelto di ricordare le credenziali comunicate nel primo 401 e di inviarle nuovamente senza l'esplicita autorizzazione dell'utente per le richieste successive. Questo è un tentativo di fornire all'utente il modello "connesso / disconnesso" che si aspettano, ma è puramente un kludge. È il browser che simula questa persistenza di stato. Il web server non ne è completamente consapevole.
Quindi "disconnettersi", nel contesto di http-auth, è puramente una simulazione fornita dal browser, e quindi al di fuori dell'autorità del server.
Sì, ci sono kludges. Ma infrangono la RESTfulness (se questo è di valore per te) e non sono affidabili.
Se hai assolutamente bisogno di un modello connesso / disconnesso per l'autenticazione del tuo sito, la scommessa migliore è un cookie di tracciamento, con la persistenza dello stato memorizzata sul server in qualche modo (mysql, sqlite, flatfile, ecc.). Ciò richiederà che tutte le richieste siano valutate, ad esempio, con PHP.