Mauvaise politique CSP fichier JS

Bonjour,

J’ai installé une instance Discourse hier, et aujourd’hui, l’écran s’affiche en noir. Dans la console, je vois :

Le chargement du script « https://ajax.cloudflare.com/cdn-cgi/scripts/95c75768/cloudflare-static/rocket-loader.min.js » a été refusé car il enfreint la directive de politique de sécurité du contenu (CSP) suivante : « script-src 'unsafe-eval' 'report-sample' [url]/logs/ [url]/sidekiq/ [url]/mini-profiler-resources/ [url]/assets/ [url]/brotli_asset/ [url]/extra-locales/ [url]/highlight-js/ [url]/javascripts/ [url]/plugins/ [url]/theme-javascripts/ [url]/svg-sprite/ ». Notez que 'script-src-elem' n'a pas été défini explicitement, donc 'script-src' est utilisé comme solution de repli.
Un code de réponse HTTP erroné (404) a été reçu lors de la récupération du script.

Comment puis-je résoudre ce problème ?

Désactivez Cloudflare pour votre site dans votre panneau de contrôle Cloudflare. En particulier, la fonctionnalité Rocket Loader est absolument incompatible avec Discourse.

Pourriez-vous s’il vous plaît expliquer pourquoi c’est « absolument » incompatible ? Je l’utilise sur d’autres applications Rails fortement personnalisées et optimisées avec succès (généralement après un peu de débogage). Je me demande pourquoi Discourse n’a pas été remanié pour rendre cela fonctionnel avec l’ensemble complet des services CloudFlare, étant donné qu’ils sont très largement utilisés.

Demandez à CloudFlare pourquoi, c’est leur code, pas le nôtre.

Il n’y a vraiment aucun avantage ou incitation ici.

Vous semblez fonctionner sous l’hypothèse que Cloudflare peut optimiser le code de Discourse mieux que les propres développeurs de CDCK. Sur quoi vous basez-vous pour cela ?

Cloudflare convient en tant que cache, mais toutes les fonctionnalités de performance doivent être désactivées, sinon votre installation n’est plus du tout prise en charge.

D’après certaines discussions que j’ai vues ici, il semble y avoir des problèmes avec l’apparition rapide du premier rendu significatif, car divers tests ont retourné de tels résultats. J’espérais que Rocket Loader pourrait peut-être réduire encore cela, tandis que des travaux réels sont en cours dans ce domaine pour le résoudre.

Non, cela empirera les choses. Discourse est une application JavaScript, donc le premier chargement prendra un peu plus de temps car l’application doit être téléchargée dans l’environnement d’exécution JavaScript du navigateur.

Merci de l’avoir précisé.

Techniquement, cela devrait fonctionner, mais si ce n’est pas le cas, c’est parce que Cloudflare a écrit du mauvais code. Vous devriez leur envoyer un e-mail à ce sujet si vous souhaitez poursuivre cette démarche. Nous ne pouvons pas contrôler le code de Cloudflare car nous… ne sommes pas Cloudflare.

J’espère que c’est assez clair.