veilletech.fr
29 sept. Feed du jour
#04 SYMFONY Article

Symfony Reprise 1.3 : la CSP ne bloque plus le JS

Une CSP stricte ne doit pas vous coûter tout votre JavaScript.

Reprise, l'intégration de Vite et Rsbuild dans Symfony, sort en 1.3.0. Sous une CSP à nonce, ses balises modulepreload et ses en-têtes Link n'avaient pas de nonce : le navigateur les bloquait et le JavaScript ne tournait pas. C'est corrigé, comme la lecture d'un entrypoints.json vide pendant sa réécriture ; Stimulus se recharge aussi sans redémarrer le serveur de développement.

3 min de lectureintermédiairevidéo 1:29
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. Le correctif qui compte : CSP à nonce
  3. Une course en production
  4. Le confort en développement
  5. Rattrapé des versions précédentes
  6. À retenir

Ce qui se passe

Reprise, la couche qui relie Symfony à Vite ou Rsbuild et qui a pris le relais de Webpack Encore en 1.0 fin août, publie sa 1.3.0. C'est le premier billet depuis la 1.0 : il reprend aussi trois changements des 1.1.0, 1.1.3 et 1.2.0 qui n'avaient eu droit qu'à une ligne de changelog.

Le correctif qui compte : CSP à nonce

Avec une Content Security Policy à base de nonce (script-src 'nonce-...', celle que met en place NelmioSecurityBundle), les balises <link rel="modulepreload"> produites par Reprise, et les en-têtes HTTP Link: équivalents, ne portaient pas de nonce. Le navigateur les bloquait ; un module dont le préchargement est bloqué ne se charge pas ; l'application restait sans JavaScript.

Depuis la 1.3.0 (PR #134 et #149, Hugo Alliaume) :

Une course en production

Après chaque compilation, Reprise réécrit entrypoints.json et manifest.json. L'écriture directe vide d'abord le fichier : une requête PHP tombant à ce moment lisait un fichier vide et levait une JsonException. Les deux fichiers sont désormais écrits à côté puis renommés sur la cible, avec repli sur l'écriture directe si le renommage échoue (Windows peut le refuser quand un autre processus tient le fichier).

Le confort en développement

Rattrapé des versions précédentes

Source : Symfony Reprise 1.3.0 released, Symfony, 28 septembre 2026.