Skip to Content

Content Preview und Sicherheitsgrenze

Die Vorschau verbindet Strapis eingebaute Preview-Funktion mit Next.js Draft Mode.

Ablauf

  1. Strapi erzeugt für Kategorie oder Story eine URL zur App-Route /api/preview.
  2. Die URL enthält Content-Typ, Dokument-ID, Locale, Status und ein gemeinsames Secret.
  3. Die App prüft Secret und alle Parameter.
  4. Für einen Entwurf aktiviert sie Draft Mode in der aktuellen Sitzung.
  5. Der CMS-Proxy lädt danach status=draft mit einem serverseitigen Strapi-Token.
  6. Der Browser erhält weder Preview-Secret noch API-Token.

Ein veröffentlichter Inhalt mit gespeicherten Änderungen trägt in Strapi den Status modified; die Preview-Konfiguration behandelt ihn als Entwurf.

Zuordnung der Umgebungen

CMS und App werden immer innerhalb derselben Zielumgebung gekoppelt: Das Staging-CMS öffnet die Staging-App, das Produktions-CMS die Produktions-App. PREVIEW_FRONTEND_URL, PREVIEW_SECRET, CMS_ADMIN_ORIGIN und das serverseitige Preview-Token müssen zu diesem Paar gehören. Eine Mischung von Staging und Produktion ist nicht zulässig.

Die konkreten Staging-Adressen und betrieblichen Konfigurationsorte stehen nur im internen Betriebshandbuch. Für eine eigene Installation werden die Werte in der jeweiligen Zielumgebung gesetzt.

Sicherheitsregeln

  • PREVIEW_SECRET muss für CMS und App einer Umgebung übereinstimmen.
  • CMS_PREVIEW_API_TOKEN erhält nur notwendige Leserechte für Entwürfe.
  • Beide Werte sind serverseitig und dürfen nie NEXT_PUBLIC_ verwenden.
  • Öffentliche CMS-Abfragen mit status=draft werden durch eine Policy abgewiesen.
  • Der App-Proxy ignoriert vom Browser gelieferte status- und publicationState-Parameter.
  • Draft-Antworten werden nicht öffentlich gecacht und Vorschauseiten mit noindex markiert.

Preview-Route, Draft-Policy, CMS-Proxy, Tokenrechte und CSP bilden gemeinsam eine Sicherheitsgrenze. Änderungen werden immer in App und CMS koordiniert getestet.