Aggiornamento da 2.4.0.beta9 a 2.4.0.beta10 restituisce una pagina senza contenuto - Cloudflare Rocket Loader

Ho ricevuto questa mattina una notifica via email per un aggiornamento del browser con un solo clic, che ho eseguito come al solito. Al termine e al ritorno sui forum, ho trovato solo una pagina vuota con l’immagine di sfondo e l’intestazione previste, ma nessun altro contenuto.

Passando a /var/discourse ed eseguendo ./launcher rebuild app, l’operazione si è svolta come previsto, ma il sito del forum presenta ancora lo stesso comportamento (immagine di intestazione e sfondo, nessun contenuto).

Aiuto?

Se visualizzo il codice sorgente, sembra che almeno PARTE del contenuto sia presente… è semplicemente non visibile. Non sono state apportate modifiche tra la versione 2.4.0.beta9 e la build corrente.

Hai errori nella console del browser? (Clicca con il tasto destro, ispeziona elemento, quindi vai alla scheda console)

Sì:

È stato bloccato il caricamento dello script ‘https://ajax.cloudflare.com/cdn-cgi/scripts/7089c43e/cloudflare-static/rocket-loader.min.js’ perché viola la seguente direttiva Content Security Policy: “script-src ‘report-sample’ https://forums.stillwellaudio.com/logs/ https://forums.stillwellaudio.com/sidekiq/ https://forums.stillwellaudio.com/mini-profiler-resources/ https://forums.stillwellaudio.com/assets/ https://forums.stillwellaudio.com/brotli_asset/ https://forums.stillwellaudio.com/extra-locales/ https://forums.stillwellaudio.com/highlight-js/ https://forums.stillwellaudio.com/javascripts/ https://forums.stillwellaudio.com/plugins/ https://forums.stillwellaudio.com/theme-javascripts/ https://forums.stillwellaudio.com/svg-sprite/ https://www.google-analytics.com/analytics.js”. Nota che ‘script-src-elem’ non è stato impostato esplicitamente, quindi viene utilizzata ‘script-src’ come soluzione di riserva.

20La risorsa è stata precaricata utilizzando link preload ma non è stata utilizzata entro pochi secondi dall’evento di caricamento della finestra. Assicurati che abbia un valore as appropriato e che sia stata precaricata intenzionalmente.

L’“ottimizzazione” JavaScript di Cloudflare causa regolarmente problemi con i siti Discourse. Dovresti accedere al tuo account Cloudflare e modificare il dominio del forum da una “nuvola arancione” a una “nuvola grigia”.

È una soluzione semplice, grazie. È un peccato, dato che aggira tutta la protezione DDoS di Cloudflare e l’occultamento degli indirizzi IP, ma cambiarlo HA fatto funzionare le cose. Contatterò l’assistenza di Cloudflare per segnalare il problema.

Non credo che Cloudflare possa fare molto automaticamente. Ci sono istruzioni per abilitare Rocket Loader nella CSP. Tuttavia, il JavaScript di Discourse è già fortemente ottimizzato, quindi Rocket Loader non è necessario.

Se accedi alle impostazioni di Cloudflare, dovresti poter disabilitare specificamente Rocket Loader. Successivamente, puoi riattivare il proxy e gli errori CSP dovrebbero scomparire.

Per la maggior parte degli utenti è più semplice disabilitare completamente Cloudflare, ma se hai davvero bisogno della protezione DDoS, puoi configurarla seguendo le istruzioni qui: Full site CDN acceleration for Discourse

Confermato: disabilitare Rocket Loader e riattivare il Proxy sembra funzionare altrettanto bene. È un buon compromesso, grazie!

Per chiarezza, non è necessario disattivare la nuvola arancione; puoi anche lasciarla attiva configurando una regola di pagina per “disabilitare le prestazioni” per l’intero sito.

La loro protezione DDoS non è legata alle funzionalità di ottimizzazione.

Detto questo, lasciare la nuvola attiva rallenta ogni richiesta, quindi a meno che tu non abbia davvero bisogno della protezione DDoS o voglia utilizzare la loro CDN, è meglio tenerla disabilitata.

Utilizzo l’instradamento intelligente di Argo e altre funzionalità di prestazioni di Cloudflare e, in linea generale, questo MIGLIORA effettivamente le prestazioni in modo evidente… principalmente per il sito web principale di quel dominio piuttosto che per il forum, ma è il sito web principale che permette alle persone di acquistare i miei prodotti… più veloce è meglio. Comunque, disattivare quella specifica ottimizzazione (Rocket Loader) consente a Discourse di funzionare dietro il proxy, e questo è un compromesso accettabile. Grazie!

Problema simile dopo l’aggiornamento alla versione 2.4.0 beta 10

Ho sia la versione con https://www che quella senza www.

La versione con https://www funziona perfettamente.

La versione senza www diventa vuota in Chrome e Safari con molti errori nella Console.

Il caricamento dello script ‘’ è stato rifiutato perché viola la seguente direttiva della Content Security Policy: “script-src ‘report-sample’ ”. Nota che ‘script-src-elem’ non è stato impostato esplicitamente, quindi viene utilizzata ‘script-src’ come fallback.

Il caricamento dello script ‘https://dastereo.ru/assets/locales/ru-2fae24b4e1db72deb2076bee15794ed9e0a6814a5bf52d778e29c106812aaa6c.js’ è stato rifiutato perché viola la seguente direttiva della Content Security Policy: “script-src ‘report-sample’ https://www.dastereo.ru/logs/ https://www.dastereo.ru/sidekiq/ https://www.dastereo.ru/mini-profiler-resources/ https://www.dastereo.ru/assets/ https://www.dastereo.ru/brotli_asset/ https://www.dastereo.ru/extra-locales/ https://www.dastereo.ru/highlight-js/ https://www.dastereo.ru/javascripts/ https://www.dastereo.ru/plugins/ https://www.dastereo.ru/theme-javascripts/ https://www.dastereo.ru/svg-sprite/ https://www.google-analytics.com/analytics.js”. Nota che ‘script-src-elem’ non è stato impostato esplicitamente, quindi viene utilizzata ‘script-src’ come fallback.

Esiste una soluzione semplice?

Non è supportata l’esecuzione di un sito su due domini contemporaneamente. Potresti risolvere questo specifico errore disabilitando la Content Security Policy, ma non lo consiglierei.

La soluzione migliore sarebbe reindirizzare uno dei due domini all’altro.

Usi anche Cloudflare? In tal caso, puoi utilizzare due regole di pagina per reindirizzare da:

http://example.com/* :right_arrow: https://example.com/$1
https://example.com/* :right_arrow: https://www.example.com/$1