Bad CSP policy JS file

Hi,

I installed Discourse instance yesterday, and today it shows dark page and in console I see

Refused to load the script 'https://ajax.cloudflare.com/cdn-cgi/scripts/95c75768/cloudflare-static/rocket-loader.min.js' because it violates the following Content Security Policy directive: "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/". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
A bad HTTP response code (404) was received when fetching the script.

How can I fix it?

Disable cloudflare for your site in your cloudflare control panel. The Rocket Loader feature in particular is absolutely incompatible with Discourse.

이것이 “절대” 호환되지 않는다는 이유를 좀 더 자세히 설명해 주시겠어요? 저는 이 기능을 다른 레일스 앱에서도 성공적으로 사용하고 있습니다(보통 약간의 디버깅 후에). 이 앱은 광범위하게 커스터마이징되고 최적화되어 있으며, CloudFlare의 전체 서비스 스위트와 함께 Discourse가 재구성되지 않은 이유가 궁금합니다. CloudFlare는 매우 많이 사용되고 있기 때문입니다.

CloudFlare에 물어보세요. 그 코드 때문이지, 우리 때문이 아니니까요.

여기에는 실제로 이점이나 동기가 없습니다.

당신은 Cloudflare가 Discourse 코드를 CDCK 자체 개발자보다 더 잘 최적화할 수 있다는 전제 하에 행동하고 있는 것으로 보입니다. 그 근거는 무엇인가요?

Cloudflare는 캐시로 괜찮지만, 모든 성능 기능이 비활성화되어야 합니다. 그렇지 않으면 설치 환경이 완전히 지원되지 않습니다.

여기서 본 몇몇 토론을 보면, 다양한 테스트에서 의미 있는 첫 페인트(First Paint)가 충분히 빠르게 표시되지 않는 문제가 있는 것으로 보입니다. 이 문제를 해결하기 위해 해당 영역에서 실제 작업이 진행되는 동안, 로켓 로더(Rocket Loader)가 이를 추가로 줄여줄 수 있기를 기대하고 있습니다.

아니요, 그렇게 하면 오히려 더 나빠질 거예요. Discourse는 JavaScript 애플리케이션이기 때문에, 앱이 브라우저의 JavaScript 런타임으로 다운로드되는 과정에서 최초 로딩 시 약간 더 많은 비용이 발생합니다.

확인해 주셔서 감사합니다.

기술적으로는 동작해야 하지만, 그렇지 않다면 그것은 Cloudflare가 잘못된 코드를 작성했기 때문입니다. 이 문제를 더 깊이 파고들고 싶으시다면 Cloudflare에 이메일을 보내보시길 권합니다. Cloudflare의 코드를 우리가 통제할 수 없는 이유는… 우리가 Cloudflare가 아니기 때문입니다.

충분히 명확하게 설명드린 것 같습니다.