Actualización de 2.4.0.beta9 a 2.4.0.beta10 genera página sin contenido - Cloudflare Rocket Loader

Recibí una notificación por correo electrónico esta mañana sobre una actualización del navegador con un solo clic, que realicé como de costumbre. Al finalizar y volver a los foros, solo obtengo una página en blanco con la imagen de fondo y el encabezado esperados, pero sin ningún otro contenido.

Cambiar a /var/discourse y ejecutar ./launcher rebuild app funciona como se espera, pero el sitio del foro sigue presentando el mismo comportamiento (imagen de encabezado + fondo, sin contenido).

¿Ayuda?

Si veo el código fuente, parece que al menos ALGUNA parte del contenido está ahí… simplemente no es visible. No se han realizado cambios en ellos entre la versión 2.4.0.beta9 y la compilación actual.

¿Tienes algún error en la consola de tu navegador? (Haz clic derecho, inspecciona el elemento y luego ve a la pestaña de la consola)

Sí:

Se ha rechazado la carga del script ‘https://ajax.cloudflare.com/cdn-cgi/scripts/7089c43e/cloudflare-static/rocket-loader.min.js’ porque viola la siguiente directiva de Política de Seguridad de Contenidos: “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”. Tenga en cuenta que ‘script-src-elem’ no se estableció explícitamente, por lo que se utiliza ‘script-src’ como alternativa.

20El recurso se precargó usando link preload pero no se utilizó dentro de unos segundos desde el evento de carga de la ventana. Asegúrese de que tenga un valor as apropiado y que se haya precargado intencionalmente.

La ‘optimización’ de JavaScript de Cloudflare causa problemas regularmente en los sitios de Discourse. Deberías iniciar sesión en tu cuenta de Cloudflare y cambiar el dominio del foro de una ‘nube naranja’ a una ‘nube gris’.

Esa es una solución sencilla, gracias. Es un poco decepcionante, ya que se elude toda la protección contra ataques DDoS y el ocultamiento de direcciones IP de Cloudflare, pero el cambio SÍ lo hizo funcionar. Me pondré en contacto con el soporte de Cloudflare para reportar el problema.

No creo que Cloudflare pueda hacer mucho automáticamente. Hay instrucciones para permitir Rocket Loader en la CSP. Sin embargo, el JavaScript de Discourse ya está muy optimizado, por lo que Rocket Loader no es necesario.

Si entras en la configuración de Cloudflare, debería ser posible desactivar Rocket Loader específicamente. Luego puedes volver a activar el proxy y los errores de CSP deberían desaparecer.

Para la mayoría de los usuarios es más fácil desactivar Cloudflare por completo, pero si realmente necesitas la protección contra ataques DDoS, puedes configurarlo siguiendo las instrucciones aquí: Full site CDN acceleration for Discourse

Confirmado: desactivar Rocket Loader y volver a habilitar Proxy parece funcionar también. ¡Esa es una buena solución, gracias!

Para aclarar, no es necesario desactivar la nube naranja; también puedes dejarla activada con una regla de página para “deshabilitar el rendimiento” en todo el sitio.

Su protección contra DDoS no está vinculada a las funciones de optimización.

Dicho esto, dejar la nube activada ralentiza cada solicitud, por lo que, a menos que realmente necesites protección contra DDoS o quieras usar su CDN, es mejor dejarla desactivada.

Uso el enrutamiento inteligente de Argo y otras funciones de rendimiento de Cloudflare. Como regla general, SÍ mejora el rendimiento de manera notable… principalmente para el sitio web principal de ese dominio en lugar del foro, pero el sitio web principal es lo que permite a las personas comprar mis productos… más rápido es mejor. De todos modos, desactivar esa optimización en particular (Rocket Loader) permite que Discourse funcione detrás del proxy, y eso es un compromiso decente. ¡Gracias!

Problema similar tras actualizar a la versión 2.4.0 beta 10

Tengo las versiones con https://www y sin www.

La versión con https://www funciona correctamente.

La versión sin www se muestra en blanco en Chrome y Safari, con muchos errores en la consola.

Se ha bloqueado la carga del script ‘’ porque viola la siguiente directiva de Política de Seguridad de Contenido (CSP): “script-src ‘report-sample’ ”. Tenga en cuenta que ‘script-src-elem’ no se estableció explícitamente, por lo que se utiliza ‘script-src’ como alternativa.

Se ha bloqueado la carga del script ‘https://dastereo.ru/assets/locales/ru-2fae24b4e1db72deb2076bee15794ed9e0a6814a5bf52d778e29c106812aaa6c.js’ porque viola la siguiente directiva de Política de Seguridad de Contenido (CSP): “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”. Tenga en cuenta que ‘script-src-elem’ no se estableció explícitamente, por lo que se utiliza ‘script-src’ como alternativa.

¿Existe una solución sencilla?

Ejecutar un sitio en dos dominios simultáneamente no es compatible. Podrías solucionar este error específico deshabilitando la Política de Seguridad de Contenido, pero no lo recomendaría.

Lo mejor sería redirigir uno de los dominios al otro.

¿También usas Cloudflare? Si es así, puedes usar dos reglas de página para redirigir desde:

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