/** * Logout — invalidate basic_auth cache + reload. * * Trick: fetch на защищённый endpoint с явно неверным Basic-токеном. * Caddy ответит 401 (because creds wrong) → браузер выкинет старые cached * creds для этого origin. Затем hard reload — Caddy снова запросит basic_auth * prompt, потому что cached creds invalidated. * * Это работает в Safari/Chrome/Firefox; legacy `ClearAuthenticationCache` * не нужен. */ export async function logout(): Promise { try { await fetch("/api/v1/me", { headers: { Authorization: "Basic " + btoa("logout:logout"), }, cache: "no-store", }); } catch { // Сетевая ошибка — всё равно делаем hard reload. } // Hard reload форсит новый basic_auth handshake. window.location.href = "/"; }