Проста відповідь полягає в тому, що ви не можете надійно вийти з http-аутентифікації.
Довга відповідь:
Http-auth (як і решта HTTP-специфікації) повинен бути без громадянства. Тож "вхід у систему" або "вихід із системи" насправді не є концепцією, яка має сенс. Кращий спосіб бачити це - запитувати для кожного HTTP запиту (і пам’ятайте, що завантаження сторінки зазвичай є декількома запитами), "чи вам дозволяється робити те, що ви запитуєте?". Сервер розглядає кожен запит як новий і не пов'язаний з будь-якими попередніми запитами.
Браузери вирішили запам’ятати облікові дані, які ви їм повідомляєте на перші 401, і повторно надішліть їх без явного дозволу користувача на наступні запити. Це спроба дати користувачеві модель "увійшов / вийшов", яку вони очікують, але це суто хитрощі. Це браузер, який моделює цю стійкість держави. Веб-сервер про це абсолютно не знає.
Отже, "вихід із системи" в контексті http-auth - це суто моделювання, що надається браузером, і так поза межами повноважень сервера.
Так, є хитрощі. Але вони порушують RESTful-ness (якщо це для вас цінно) і вони ненадійні.
Якщо вам абсолютно потрібна модель для входу / виходу з системи для аутентифікації вашого сайту, найкраща ставка - це відстежуючий файл cookie з збереженням стану, який зберігається на сервері певним чином (mysql, sqlite, flatfile тощо). Це вимагатиме оцінки всіх запитів, наприклад, за допомогою PHP.