Arquivo JS com política CSP inadequada

Olá,

Instalei uma instância do Discourse ontem, e hoje ela mostra uma página escura. No console, vejo:

A carga do script 'https://ajax.cloudflare.com/cdn-cgi/scripts/95c75768/cloudflare-static/rocket-loader.min.js' foi recusada porque viola a seguinte diretiva de Política de Segurança de Conteúdo (CSP): "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/". Observe que 'script-src-elem' não foi definido explicitamente, então 'script-src' foi usado como alternativa.
Um código de resposta HTTP ruim (404) foi recebido ao buscar o script.

Como posso corrigir isso?

Desative o Cloudflare para seu site no painel de controle do Cloudflare. Em particular, o recurso Rocket Loader é absolutamente incompatível com o Discourse.

Você poderia explicar por que isso é “absolutamente” incompatível? Eu uso isso em outros aplicativos Rails altamente personalizados e otimizados com sucesso (geralmente após um pouco de depuração). Estou curioso sobre por que o Discourse não foi refeito para tornar isso funcional com o conjunto completo de serviços do CloudFlare, já que ele é tão amplamente utilizado.

Pergunte à CloudFlare o motivo, é o código deles, não o nosso.

Na verdade, não há nenhum benefício ou incentivo aqui.

Parece que você está operando sob a suposição de que a Cloudflare pode otimizar o código do Discourse melhor do que os próprios desenvolvedores da CDCK. Em que você está baseando isso?

A Cloudflare é boa como cache, mas todos os recursos de desempenho precisam ser desativados; caso contrário, sua instalação não será totalmente suportada.

A partir de algumas discussões que vi aqui, parece haver problemas com a primeira pintura significativa aparecendo com rapidez suficiente em vários testes que têm retornado tais resultados. Eu esperava que o Rocket Loader talvez reduzisse isso ainda mais enquanto o trabalho real prossegue nessa área para resolvê-lo.

Não, isso vai piorar a situação. O Discourse é uma aplicação JavaScript, então o carregamento inicial vai custar um pouco mais, pois o aplicativo é baixado para o ambiente de execução JavaScript do navegador.

Obrigado por esclarecer.

Tecnicamente, isso deveria funcionar, mas se não funcionar, é porque a Cloudflare escreveu código ruim. Se você quiser levar isso adiante, deve entrar em contato com eles por e-mail. Não podemos controlar o código da Cloudflare porque… não somos a Cloudflare.

Espero que isso esteja claro o suficiente.