Middleware Cloudflare : Preview Mode
Objet : Middleware Cloudflare Worker
Type : Worker
Slice : Slice 1 (Page dâaccueil) + Slice 2 (Blog)
Cycle : DOC â SPEC â CODE â TEST â INTĂG
Statut : DOC
1. Description et périmÚtre
Section titled â1. Description et pĂ©rimĂštreâ1.1. Objectif
Section titled â1.1. ObjectifâLe middleware Cloudflare Worker est un Worker indĂ©pendant qui gĂšre le mode preview Sanity. Il valide le secret de preview, pose le cookie sanity-preview, et force le bypass du cache Edge.
1.2. Utilisation principale
Section titled â1.2. Utilisation principaleâ- Validation du mode preview Sanity
- Gestion du cookie
sanity-preview - Bypass du cache Edge en mode preview
- Protection contre les open redirects
1.3. PérimÚtre concerné
Section titled â1.3. PĂ©rimĂštre concernĂ©â- Type : Cloudflare Worker indĂ©pendant
- Isolation : IsolĂ© dâAstro (conformĂ©ment Ă lâADR L3)
- Localisation :
services/preview-middleware/ - Intégration : Placé en amont de la couche de présentation
2. Contrats dâentrĂ©e
Section titled â2. Contrats dâentrĂ©eâ2.1. RequĂȘte HTTP
Section titled â2.1. RequĂȘte HTTPâEntrĂ©e : RequĂȘte HTTP avec paramĂštres de preview
Structure :
GET /api/preview?secret={SANITY_PREVIEW_SECRET}&slug={slug}RĂšgles :
secret: obligatoire, secret de preview Sanityslug: obligatoire, slug de la page à prévisualiser- Validation du secret cÎté middleware
2.2. Variables dâenvironnement
Section titled â2.2. Variables dâenvironnementâEntrĂ©e : Variables dâenvironnement Cloudflare
Structure :
{ SANITY_PREVIEW_SECRET: string, SANITY_PROJECT_ID: string, SANITY_DATASET: string}RĂšgles :
SANITY_PREVIEW_SECRET: obligatoire, secret de validationSANITY_PROJECT_ID: obligatoire, ID du projet SanitySANITY_DATASET: obligatoire, nom du dataset
3. Contrats de sortie
Section titled â3. Contrats de sortieâ3.1. Cookie de preview
Section titled â3.1. Cookie de previewâSortie : Cookie sanity-preview posĂ©
Comportement :
- Cookie
sanity-preview=true path=/httpOnly=truesecure=truesameSite=laxmaxAge=3600(1 heure)
3.2. Redirect
Section titled â3.2. RedirectâSortie : Redirect vers la page demandĂ©e
Comportement :
- Status HTTP 307 (Temporary Redirect)
- Redirect vers le slug validé
- Protection contre les open redirects
3.3. Bypass du cache Edge
Section titled â3.3. Bypass du cache EdgeâSortie : Bypass du cache Edge en mode preview
Comportement :
cf.cacheEverything = falseen mode preview- Force le rendu Ă la demande
- Ăvite le cache statique
4. Side effects
Section titled â4. Side effectsâ4.1. Impact sur le cache
Section titled â4.1. Impact sur le cacheâEffet : Le middleware bypass le cache Edge en mode preview
Impact :
- En mode preview : pas de cache, rendu Ă la demande
- En mode normal : cache Edge activé
- Nécessite de détecter le cookie
sanity-preview
4.2. Impact sur la sécurité
Section titled â4.2. Impact sur la sĂ©curitĂ©âEffet : Le middleware valide le secret de preview
Impact :
- Protection contre lâaccĂšs non autorisĂ© aux drafts
- Protection contre les open redirects
- Cookie sécurisé (httpOnly, secure)
5. Erreurs et gestion
Section titled â5. Erreurs et gestionâ5.1. Erreurs potentielles
Section titled â5.1. Erreurs potentiellesâ| Erreur | Cause probable | Solution |
|---|---|---|
| Secret invalide | Secret incorrect ou manquant | Retourner HTTP 401 |
| Slug invalide | Slug mal formaté | Sanitizer le slug (protection open redirect) |
| Cookie non posé | Erreur lors de la pose du cookie | Retourner HTTP 500 |
| Variable manquante | Variable dâenvironnement manquante | Retourner HTTP 500 |
5.2. Codes HTTP
Section titled â5.2. Codes HTTPâ- 200 : Preview activĂ© avec succĂšs
- 307 : Redirect vers la page demandée
- 401 : Secret invalide ou manquant
- 500 : Erreur serveur
6. Checklist de validation
Section titled â6. Checklist de validationâAvant de passer Ă lâĂ©tape SPEC, vĂ©rifier :
- La structure du middleware est documentée
- Les contrats dâentrĂ©e/sortie sont documentĂ©s
- Les side effects sont identifiés
- Les erreurs potentielles sont documentées
7. Approbation
Section titled â7. ApprobationâValidation requise : Confirmer que la documentation du middleware preview peut passer Ă lâĂ©tape SPEC.
8. Historique des modifications
Section titled â8. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-16 | 1.0 | Création initiale | Devin |