Die einfache Antwort lautet, dass Sie sich nicht zuverlässig von der http-Authentifizierung abmelden können.
Die lange Antwort:
Http-auth (wie der Rest der HTTP-Spezifikation) soll zustandslos sein. "Angemeldet" oder "Abgemeldet" zu sein, ist also kein wirklich sinnvolles Konzept. Der bessere Weg, dies zu sehen, besteht darin, für jede HTTP-Anforderung (und denken Sie daran, dass beim Laden einer Seite normalerweise mehrere Anforderungen erforderlich sind) zu fragen, ob Sie das tun dürfen, was Sie anfordern. Der Server sieht jede Anforderung als neu an und hat nichts mit früheren Anforderungen zu tun.
Browser haben sich entschieden, sich die Anmeldeinformationen zu merken, die Sie ihnen beim ersten 401 mitgeteilt haben, und sie ohne die ausdrückliche Erlaubnis des Benutzers bei nachfolgenden Anforderungen erneut zu senden. Dies ist ein Versuch, dem Benutzer das erwartete Modell "angemeldet / abgemeldet" zu geben, aber es ist nur ein Kludge. Es ist der Browser , der diese Beständigkeit des Zustands simuliert. Der Webserver ist sich dessen überhaupt nicht bewusst.
Das "Abmelden" im Kontext von http-auth ist also eine reine Simulation, die vom Browser bereitgestellt wird und somit außerhalb der Autorität des Servers liegt.
Ja, es gibt Kludges. Aber sie brechen die Ruhe (wenn das für Sie von Wert ist) und sie sind unzuverlässig.
Wenn Sie für Ihre Site-Authentifizierung unbedingt ein angemeldetes / abgemeldetes Modell benötigen, ist die beste Wahl ein Tracking-Cookie, bei dem der Status auf irgendeine Weise auf dem Server gespeichert bleibt (MySQL, SQLite, Flatfile usw.). Dies erfordert, dass alle Anforderungen beispielsweise mit PHP ausgewertet werden.