-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use of modal with strict Content-Security-Policy headers with Nextjs #303
Comments
Hello @carolineBda, Thanks for the kind words, @lsagetlethias maybe you have some insights on this? 🙏🏻 |
C'est dommage que l'approche proposé désactive le contenu statique sur next (car on récupère à travers les headers)... Peut-être qu'on peut se planifier un point pour voir si on peut contribuer ou refacto pour bypasser cela |
@maxgfr l'approche proposé de quoi exactement? |
Pour mon point 1) le pb d'implémentation du nonce vient de chez nous. Pour le point 2) et le retour de @maxgfr, si l'on comprends la seule façon d'utiliser react-dsfr sans ajouter un unsafe-inline à notre config CSP est d'utiliser le Donc, sauf si l'on a pas bien compris, il n'est pas possible en l'état d'utiliser react-dsfr sur des pages static avec l'App Router de Nextjs ? |
@garronej Yes, je parlais de l'approche suivante de la documentation : const nonce = headers().get("x-nonce") ?? undefined; Qu'on utilise dans le |
Hello !
Le Une solution non implémentée par Next.js serait de passer sur un |
Refs :
|
Hello, Oui, le but n'étant pas de trouver une solution en bypassant l'approche next du La question que je me pose est : techniquement, quelle fut la raison pour laquelle on injecte du JS à la volée. Ça m'intéresserait de comprendre pourquoi avons nous besoin de cela ? Quelle feature utilise cela ? |
Merci @lsagetlethias d'avoir pris le temps! |
Pour éviter les "white flashes", voici un exemple de white flash : Screen.Recording.2024-09-13.at.16.47.46.movCela se produit lorsque le serveur rend l'application en mode clair et qu'on doit attendre l'hydratation (l'exécution des callbacks On a donc besoin d'un script qui applique le bon attribut HTML le plus tôt possible afin d'éviter les "white flashes". C'est l'approche canonique qui est implémentée même sur le site officiel de React : https://react.dev/ |
Merci beaucoup pour vos réponses. Est-ce que les "whites flashes" sont juste du au thème ? Si oui est-ce qu'il serait envisageable d'avoir une version de react-dsfr sans possibilité de changer le thème et donc sans besoin d'ajouter un script à la volée ? |
@carolineBda Si par "thème" vous entendez la possibilité d'afficher le site en mode sombre et en mode clair, alors oui. Si vous me demandez mon avis, je vous conseillerais simplement de désactiver les CSP. Next.js ne propose pas, à ce jour, de solution à ce problème pourtant assez classique. Si vous tenez absolument à conserver les CSP, la seule chose que je peux vous proposer est d'opter pour une approche où vous dites : "Non, nous ne supportons pas le mode sombre, c'est mode clair uniquement". Dans ce cas, aucun script n'est nécessaire. À mon avis, c'est dommage, mais si vous le souhaitez, je peux vous faire ca. |
Pour l'instant nous pensons partir sur cette 2éme approche, sachant que service-public ne propose pas non plus le mode sombre. Le problème étant que (sauf erreur de ma part) même si on enlève la possibilité de changer le thème, react-dsfr quand il se lance, ajoute quand même un script dans le head. Est-ce qu'il y a possibilité de désactiver complètement ce comportement ? |
Oui oui je peut le faire |
Voilà @carolineBda, J'ai release une candidate 1.13.4-rc.0. Si vous mettez Si vous ne mettez pas de dark mode switch, dans le header tout devrais fonctionner. Je vous laisse me confirmer PS: Peut être que vous aurez a clean le browser cache. |
Merci beaucoup pour cette réactivité ! Est-ce que ça vient de react dsfr ? |
Je ne sais pas je n'ai pas le temps d'investiguer. Dans le doute essayez sur le starter: https://github.com/garronej/react-dsfr-next-appdir-demo £ Je vous laisse me faire un retour |
Ah oui autent pour moi j'ai fait une erreur dans mon message mais évidement je voulais dire "light" |
Merci pour la release |
Hello and thanks for all the work done in react-dsfr 👏
Modal does not work on our project unless we disable the CSP for script-src (
unsafe-inline
).It can be tested here and here is the code.
As you can see, I've tried to use
nonce
, but I did not understood where to get the nonce string so I can add it to my CSP config. Can I hard code like that ?As we aim to pass our website in static rendering, is there an other option ?
The text was updated successfully, but these errors were encountered: