Clear-Site-Data für Astro konfigurieren

Schritt-für-Schritt-Anleitung: Browser-Daten beim Logout per API-Route löschen -- Cookies, Storage und Cache gezielt raeumen.

Astro · Schritt für Schritt

Clear-Site-Data in Astro

Clear-Site-Data weist den Browser an, gespeicherte Daten zu löschen -- Cookies, LocalStorage, SessionStorage, IndexedDB und Cache. Der Header wird typischerweise beim Logout gesendet, um alle Session-Daten zuverlässig zu entfernen. Er ist mit 3 von 166 Punkten im Wolf-Agents Web Security Check relevant.

In Astro setzen Sie Clear-Site-Data in einer API-Route für den Logout-Endpoint. Die Middleware ist weniger geeignet, da der Header nur bei bestimmten Aktionen (Logout, Passwort-Änderung) gesendet werden sollte -- nicht bei jedem Request. Wolf-Agents setzt "cookies", "storage" beim Logout.

Clear-Site-Data ist besonders relevant für Astro-Anwendungen mit authentifizierten Bereichen: Dashboard-Daten in LocalStorage, Session-Tokens in Cookies und gecachte API-Responses müssen beim Logout zuverlässig gelöscht werden, um zu verhindern, dass der nächste Benutzer am selben Gerät sensible Daten sieht.

1Schritt 1 von 5

Logout-Route mit Clear-Site-Data

Erstellen Sie eine API-Route, die beim Logout den Clear-Site-Data-Header setzt. Verwenden Sie "cookies", "storage" für einen gezielten Logout. Löschen Sie Session-Cookies zusätzlich serverseitig als Fallback für Browser, die Clear-Site-Data nicht vollständig unterstützen.

src/pages/api/logout.tsEmpfohlen
// src/pages/api/logout.ts -- Clear-Site-Data beim Logout
import type { APIRoute } from 'astro';

export const POST: APIRoute = async ({ cookies }) => {
  // Session-Cookie serverseitig löschen (Fallback für Safari)
  cookies.delete('session_token', { path: '/' });

  // Browser-Daten löschen
  return new Response(JSON.stringify({ success: true }), {
    status: 200,
    headers: {
      'Clear-Site-Data': '"cookies", "storage"',
      'Content-Type': 'application/json',
    },
  });
};
src/pages/api/logout.tsAggressiv
// Alle Browser-Daten löschen (aggressiv)
return new Response(null, {
  status: 200,
  headers: {
    // Loescht ALLES: Cookies, LocalStorage, SessionStorage,
    // IndexedDB, Cache API und Service Workers
    'Clear-Site-Data': '"*"',
  },
});
2Schritt 2 von 5

Middleware-Variante für Spezialfaelle

Für Passwort-Änderungen oder Account-Löschungen können Sie Clear-Site-Data in der Middleware setzen. Die Middleware prüft den Pfad und die HTTP-Methode und setzt den Header nur bei erfolgreichen sicherheitsrelevanten Aktionen.

src/middleware.tsSSR
// src/middleware.ts -- Clear-Site-Data bei Passwort-Änderung
import { defineMiddleware } from 'astro:middleware';

export const onRequest = defineMiddleware(async (context, next) => {
  const response = await next();

  // Nur bei bestimmten Aktionen Clear-Site-Data setzen
  if (context.url.pathname === '/api/change-password'
      && context.request.method === 'POST'
      && response.ok) {
    response.headers.set('Clear-Site-Data',
      '"cookies", "storage"');
  }

  return response;
});
3Schritt 3 von 5

Client-seitige Integration

Rufen Sie die Logout-Route per fetch() auf. Der Browser verarbeitet den Clear-Site-Data-Header automatisch und löscht die angegebenen Daten. Leiten Sie den Benutzer danach zur Startseite weiter.

Client-ScriptFrontend
// Client-seitig: Logout-Button mit Clear-Site-Data
async function handleLogout() {
  const response = await fetch('/api/logout', {
    method: 'POST',
    credentials: 'same-origin',
  });

  if (response.ok) {
    // Clear-Site-Data Header löscht Cookies automatisch
    // Redirect nach kurzer Verzoegerung
    window.location.href = '/';
  }
}
4Schritt 4 von 5

Logout-Flow testen

Testen Sie den Logout-Flow und prüfen Sie, ob alle Browser-Daten gelöscht werden. Öffnen Sie die Browser DevTools und prüfen Sie Application > Storage vor und nach dem Logout.

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

# Erwartete Ausgabe:
# Clear-Site-Data: "cookies", "storage"

# Prüfen, ob Session-Cookie zusätzlich gelöscht wird
curl -sI -X POST https://ihre-domain.de/api/logout | grep -i set-cookie
# Set-Cookie: session_token=; Max-Age=0; Path=/
5Schritt 5 von 5

Direktiven im Detail

"cookies" löscht alle Cookies der Domain -- inklusive Session-Cookies und Preferences. "storage" löscht LocalStorage, SessionStorage und IndexedDB. "cache" löscht die Browser-Cache-API und Service-Worker-Caches. "executionContexts" entlädt aktive Service Workers und Shared Workers.

Für einen typischen Logout empfiehlt Wolf-Agents "cookies", "storage" -- das löscht Session-Daten und gespeicherte Formulardaten, ohne den Browser-Cache zu leeren. Für Account-Löschungen oder Sicherheitsvorfälle verwenden Sie "*", um alle Daten vollständig zu entfernen.

Beachten Sie: Clear-Site-Data funktioniert nur über HTTPS. HTTP-Responses mit diesem Header werden vom Browser ignoriert. Da Astro-Anwendungen hinter einem TLS-terminierenden Reverse Proxy laufen, ist dies in der Praxis kein Problem.

Häufige Fehler bei Clear-Site-Data in Astro

Header bei jedem Request

Setzen Sie Clear-Site-Data nur beim Logout oder bei Sicherheitsaktionen, nicht in der Middleware für jeden Request. Sonst werden alle Browser-Daten bei jedem Seitenaufruf gelöscht -- die Anwendung wird unbenutzbar.

Anführungszeichen fehlen

Die Direktiven müssen in doppelten Anführungszeichen stehen: "cookies", nicht cookies. Ohne Anführungszeichen ignorieren Browser den Header komplett. Der Wert im HTTP-Header ist "cookies", "storage" -- mit Anführungszeichen um jede Direktive.

Safari-Kompatibilität

Safari unterstützt Clear-Site-Data nur eingeschraenkt. Löschen Sie Session-Cookies zusätzlich über cookies.delete() als Fallback. Wolf-Agents nutzt dieses doppelte Loeschverfahren produktiv.

Wildcard löscht Service Workers

"*" löscht auch registrierte Service Workers und den gesamten Cache. Wenn Ihre Astro-App einen Service Worker für Offline-Funktionalität nutzt, verwenden Sie "cookies", "storage" statt "*", um den Service Worker zu erhalten.

Clear-Site-Data nur über HTTPS

Browser ignorieren den Clear-Site-Data-Header bei HTTP-Responses. Stellen Sie sicher, dass Ihr Logout-Endpoint nur über HTTPS erreichbar ist. Bei Astro hinter einem Reverse Proxy ist HTTPS auf Server-Ebene konfiguriert.

Compliance-Relevanz

Clear-Site-Data stellt sicher, dass nach einem Logout keine sensiblen Daten im Browser verbleiben. DSGVO Artikel 17 (Recht auf Löschung) und NIS2 fordern den Schutz personenbezogener Daten -- Clear-Site-Data ist eine technische Umsetzung dieser Anforderung.

Auch PCI DSS 4.0 verlangt, dass Zahlungsdaten nach einer Session zuverlässig entfernt werden. Für Astro-Anwendungen mit Stripe-Integration oder anderen Zahlungsprozessen ist Clear-Site-Data ein wichtiger Baustein. Der Wolf-Agents Web Security Check bewertet Clear-Site-Data mit bis zu 3 Punkten und prüft, ob der Header auf der Logout-Route gesetzt wird.

Wie steht Ihre Domain bei Clear-Site-Data?

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