Content Preview und Sicherheitsgrenze
Die Vorschau verbindet Strapis eingebaute Preview-Funktion mit Next.js Draft Mode.
Ablauf
- Strapi erzeugt für Kategorie oder Story eine URL zur App-Route
/api/preview. - Die URL enthält Content-Typ, Dokument-ID, Locale, Status und ein gemeinsames Secret.
- Die App prüft Secret und alle Parameter.
- Für einen Entwurf aktiviert sie Draft Mode in der aktuellen Sitzung.
- Der CMS-Proxy lädt danach
status=draftmit einem serverseitigen Strapi-Token. - 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_SECRETmuss für CMS und App einer Umgebung übereinstimmen.CMS_PREVIEW_API_TOKENerhält nur notwendige Leserechte für Entwürfe.- Beide Werte sind serverseitig und dürfen nie
NEXT_PUBLIC_verwenden. - Öffentliche CMS-Abfragen mit
status=draftwerden durch eine Policy abgewiesen. - Der App-Proxy ignoriert vom Browser gelieferte
status- undpublicationState-Parameter. - Draft-Antworten werden nicht öffentlich gecacht und Vorschauseiten mit
noindexmarkiert.
Preview-Route, Draft-Policy, CMS-Proxy, Tokenrechte und CSP bilden gemeinsam eine Sicherheitsgrenze. Änderungen werden immer in App und CMS koordiniert getestet.