Clear-Site-Data für Nuxt 3 konfigurieren

Schritt-für-Schritt: Browser-Daten beim Logout in Nuxt 3 zuverlässig löschen — Cookies, Cache und Storage per Nitro API Route mit setHeader().

Nuxt 3 · Schritt für Schritt

Clear-Site-Data in Nuxt 3

Clear-Site-Data weist den Browser an, gespeicherte Daten zu löschen — Cookies, Cache, Storage oder alle gleichzeitig. Dieser Header ist besonders nützlich beim Logout, um alle Session-Daten zuverlässig aus dem Browser zu entfernen. Mit 3 von 166 Punkten ist Clear-Site-Data ein Faktor im Wolf-Agents Web Security Check.

In Nuxt 3 setzen Sie den Clear-Site-Data-Header in der Logout-API-Route per setHeader() aus dem Nitro-Server-Kontext. Der Header darf nur auf der Logout-Route gesetzt werden — auf anderen Seiten würde der Browser bei jedem Request alle Daten löschen. Für Anwendungen mit mehreren Logout-Routen bietet sich eine Nitro Server Middleware an.

1 Implementierung

Clear-Site-Data in Nuxt 3 konfigurieren

Setzen Sie den Header in Ihrer Nitro Logout-API-Route. Die Werte "cache", "cookies" und "storage" löschen Browser-Cache, alle Cookies und localStorage/sessionStorage/IndexedDB. Für komplexere Setups mit mehreren Logout-Routen nutzen Sie die Middleware-Variante.

server/api/auth/logout.post.ts Empfohlen
// server/api/auth/logout.post.ts — Clear-Site-Data
export default defineEventHandler((event) => {
  // Alle Browser-Daten beim Logout löschen
  setHeader(event,
    'Clear-Site-Data',
    '"cache", "cookies", "storage"'
  );

  // Session-Cookie explizit löschen
  deleteCookie(event, 'session');

  // Redirect zur Startseite
  return sendRedirect(event, '/', 302);
})
server/middleware/clear-site-data.ts Middleware
// server/middleware/clear-site-data.ts
// Middleware-Ansatz für mehrere Logout-Routen
const LOGOUT_ROUTES = [
  '/api/auth/logout',
  '/api/auth/signout',
  '/api/auth/revoke',
];

export default defineEventHandler((event) => {
  const path = getRequestURL(event).pathname;

  if (LOGOUT_ROUTES.includes(path)) {
    // Header nur auf Logout-Routen setzen
    event.node.res.on('finish', () => {});
    setHeader(event,
      'Clear-Site-Data',
      '"cache", "cookies", "storage"'
    );
  }
})
composables/useLogout.ts Client
// composables/useLogout.ts — Client-seitige Integration
export function useLogout() {
  const { clear } = useUserSession();

  const logout = async () => {
    await $fetch('/api/auth/logout', {
      method: 'POST',
    });

    // Session-State clientseitig bereinigen
    clear();

    // Seite neu laden — Clear-Site-Data wirkt beim Response
    window.location.href = '/';
  };

  return { logout };
}
Warum sendRedirect() statt JSON-Response?

Clear-Site-Data löscht Cookies sofort — auch den Session-Cookie. Ein JSON-Response würde den Client in einem ausgeloggten Zustand lassen, ohne Redirect. Mit sendRedirect() wird der Nutzer direkt zur Startseite weitergeleitet, während der Browser die Daten löscht.

2 Verifizierung

Header verifizieren

Erstellen Sie einen Production-Build und prüfen Sie den Clear-Site-Data-Header auf der Logout-Route. Stellen Sie sicher, dass der Header auf normalen Seiten nicht erscheint. Der Wolf-Agents Web Security Check prüft den Header automatisch auf der Logout-Route.

Terminal Verifizieren
# Production-Build und Header prüfen
npx nuxi build
node .output/server/index.mjs

# Clear-Site-Data auf Logout-Route prüfen
curl -sI -X POST https://ihre-domain.de/api/auth/logout | grep -i clear-site

# Erwartete Ausgabe:
# clear-site-data: "cache", "cookies", "storage"

# Sicherstellen: Header NICHT auf normalen Seiten
curl -sI https://ihre-domain.de | grep -i clear-site
# Erwartete Ausgabe: (leer — kein Header)
Lösch-Optionen Varianten
// Nur Cookies löschen (minimaler Ansatz)
setHeader(event,
  'Clear-Site-Data',
  '"cookies"'
);

// Alles löschen inkl. Execution Contexts (maximaler Reset)
setHeader(event,
  'Clear-Site-Data',
  '"*"'
);

// Cache und Storage löschen, Cookies behalten
setHeader(event,
  'Clear-Site-Data',
  '"cache", "storage"'
);

Häufige Fehler

Header auf allen Seiten gesetzt

Clear-Site-Data in einer globalen Middleware ohne Route-Filter löscht Cache, Cookies und Storage bei jedem Request. Die Website wird unbenutzbar. Prüfen Sie immer den Request-Pfad in der Middleware.

Safari-Support eingeschränkt

Safari unterstützt Clear-Site-Data nur teilweise. Implementieren Sie clientseitiges Cleanup per JavaScript als Fallback — localStorage.clear() und sessionStorage.clear().

Service Worker nicht gelöscht

"cache" löscht den HTTP-Cache, aber nicht den Service-Worker-Cache. Nutzen Sie "storage" um auch IndexedDB, Service Worker Registrations und Cache Storage API zu entfernen.

Anführungszeichen vergessen

Die Werte müssen in Anführungszeichen stehen: "cache", "cookies". Ohne Quotes wird der Header ignoriert. In TypeScript: '"cache", "cookies"' — einfache Quotes umschließen doppelte.

Compliance-Relevanz

DSGVO (Art. 17 — Recht auf Löschung) erfordert die technische Umsetzung der Datenlöschung — Clear-Site-Data entfernt personenbezogene Daten aus dem Browser beim Logout. PCI DSS verlangt die sichere Beendigung von Sessions inklusive Löschung temporärer Daten. OWASP empfiehlt die Bereinigung clientseitiger Daten bei Session-Terminierung. Der Wolf-Agents Web Security Check bewertet Clear-Site-Data mit bis zu 3 Punkten und prüft die korrekte Konfiguration auf der Logout-Route.

Wie steht Ihre Domain bei Clear-Site-Data?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.