La réponse simple est que vous ne pouvez pas fiable déconnecter de l'authentification http.
La réponse longue:
Http-auth (comme le reste de la spécification HTTP) est destiné à être apatrides. Afin d'être "connecté" ou "déconnecté" n'est pas vraiment un concept qui a du sens. La meilleure façon de le voir est de demander, pour chaque requête HTTP (et n'oubliez pas de chargement de page est généralement de plusieurs demandes), "êtes-vous autorisé à faire ce que vous demandez?". Le serveur voit chaque demande en tant que nouveau et non lié à toutes les demandes précédentes.
Les navigateurs ont choisi de se rappeler les informations d'identification que vous dites sur la première 401, et ré-envoyer l'insu de l'utilisateur la permission explicite sur les demandes ultérieures. C'est une tentative de donner à l'utilisateur la "connecté/déconnecté" modèle qu'ils attendent, mais c'est purement une bidouille. C'est le navigateur qui est la simulation de cette persistance de l'état. Le serveur web est totalement inconscient.
Afin de "se déconnecter", dans le contexte de http-auth est purement une simulation fournie par le navigateur, et donc en dehors de l'autorité du serveur.
Oui, il y a kludges. Mais ils cassent RESTful-ness (si c'est de la valeur pour vous) et ils ne sont pas fiables.
Si vous avez absolument besoin d'un connecté/déconnecté (e modèle pour votre site d'authentification, le meilleur pari est un cookie de suivi, avec la persistance de l'état stocké sur le serveur (mysql, sqlite, fichier plat, etc). Cela exigera que toutes les demandes soient évaluées, par exemple, avec PHP.