Hola equipo de Discourse,
¡Gracias por ofrecer un producto tan fantástico! Mi comunidad y yo hemos disfrutado usándolo durante años. Recientemente, nos encontramos con un problema y agradeceríamos mucho cualquier ayuda.
Después de actualizar de Discourse 3.3.0 a 3.4.0, los usuarios nuevos ven una página en blanco (solo encabezado y pie de página) al hacer clic en el enlace de verificación por correo electrónico para llegar a la página “activate-account”.
(el enlace de prueba se proporcionará al final de este artículo)
Pasos Tomados Hasta Ahora:
Revisada la Consola del Desarrollador : El error indica que CSP está bloqueando scripts externos.
Intentado Modificar CSP a través de Cloudflare :
Ajustamos la política y borramos la caché, pero no resolvió el problema.
Intentado Modificar CSP a través del Panel de Administración de Discourse : Agregamos ‘self’, ‘unsafe-eval’ e intentamos el hash SHA256. También consultamos este artículo pero no vimos ningún cambio.
Mensaje de error:
Intentamos varias entradas (por ejemplo, ‘self’, ‘unsafe-eval’) e incluso configuramos la política en modo “solo informar”. Aún así, sin ningún efecto.
Caché Borrada : Sin cambios.
Reconstruir la Aplicación : Reconstruimos Discourse y borramos la caché después, pero el problema persiste.
Curiosamente, este problema no afecta a todos los usuarios nuevos. Descubrimos que alrededor del 90% de nuestros usuarios nuevos enfrentan este problema.
¡Cualquier sugerencia o solución sería muy apreciada! ¡Gracias!
pfaffman
(Jay Pfaffman)
21 Septiembre, 2024 15:50
2
¿Intentaste el modo seguro?
@pfaffman
Acabo de intentarlo y vi esto:
simon
21 Septiembre, 2024 20:35
4
Hay otro sitio que informa errores de CSP relacionados con el endpoint /cdn-cgi/speculation: Refused to load the script 'site.com/cdn-cgi/speculation' because it violates the following Content Security Policy directive - #2 by simon . No tengo conocimiento de problemas similares que se hayan informado en el pasado. Quizás algo ha cambiado en Cloudflare o en Discourse 3.4.0.
El endpoint /cdn-cgi/speculation se agrega a los dominios registrados en Cloudflare cuando la función “Speed Brain” está habilitada. Speed Brain está diseñado para acelerar el rendimiento de un sitio web al permitir que Cloudflare pre-cargue contenido cuando un usuario pasa el cursor sobre un enlace. No estoy seguro de que esto sea compatible con Discourse.
Veo que la cabecera Speculation-Rules se devuelve con la respuesta cuando visito https://community.lezismore.org/login. Eso indica que la función Speed Brain está habilitada. Según la documentación de Cloudflare, parece que está habilitada por defecto.
¿Puedes intentar deshabilitar Speed Brain desde la pestaña Speed de tu panel de control de Cloudflare? Las instrucciones sobre cómo hacerlo están aquí: Speed Brain · Cloudflare Speed docs .
La sección “Caveats” de la documentación que enlacé dice:
Speed Brain no funcionará con configuraciones restrictivas de Content Security Policy que utilicen atributos strict-dynamic o nonce-{hash}.
Si Speed Brain es compatible con Discourse, tendremos que averiguar cómo agregarlo a las reglas de Content Security.
3 Me gusta
Gracias por tu respuesta.
Ya he desactivado la configuración de Speed Brain en Cloudflare y borrado la caché como se sugirió, pero desafortunadamente, el problema persiste.
Aquí tienes el enlace a la página de cuenta activa de pruebas de hoy, para cualquiera que esté interesado: https://community.lezismore.org/users/activate-account/34180b9eed9e1a1a1dbcca7eab66fb43
simon
22 Septiembre, 2024 08:27
6
¿Puedes iniciar sesión en el sitio? Si es así, ¿ves algún mensaje de error en su página de registros de errores (https://community.lezismore.org/logs )?
1 me gusta
Sí, puedo iniciar sesión en el sitio web.
Aquí está la página de registro:
Excepción de trabajo: no se puede escribir un atributo desconocido
y los detalles son los siguientes:
Mensaje (23685 copias reportadas)
Excepción de trabajo: no se puede escribir un atributo desconocido ``
Backtrace
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activemodel-7.1.4/lib/active_model/attribute.rb:236:in `with_value_from_database'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activemodel-7.1.4/lib/active_model/attribute_set.rb:60:in `write_from_user'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/transactions.rb:435:in `restore_transaction_record_state'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/transactions.rb:345:in `rolledback!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:200:in `block in rollback_records'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:263:in `run_action_on_records'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:199:in `rollback_records'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:527:in `block in rollback_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.4/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:520:in `rollback_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:539:in `rescue in block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:538:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.4/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:532:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:344:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/transactions.rb:361:in `with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4/lib/active_record/persistence.rb:904:in `update!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.17.0/lib/mini_scheduler/manager.rb:156:in `process_queue'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.17.0/lib/mini_scheduler/manager.rb:77:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.17.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads'
1 me gusta
Hay otros errores que no estoy seguro si son relevantes, pero los proporciono de todos modos como referencia, por si acaso.
Mensaje
Job exception: PG::SyntaxError: ERROR: zero-length delimited identifier at or near ""
LINE 1: ...1506385, "success" = TRUE WHERE "scheduler_stats"." IS NULL
^
Backtrace
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `block (2 levels) in exec_no_cache'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:767:in `block in exec_no_cache'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:752:in `block in log'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract_adapter.rb:743:in `log'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:766:in `exec_no_cache'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:745:in `execute_and_clear'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/postgresql/database_statements.rb:67:in `exec_delete'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/database_statements.rb:175:in `update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:513:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:1060:in `_update_row'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/locking/optimistic.rb:93:in `_update_row'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:1082:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/attribute_methods/dirty.rb:216:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/callbacks.rb:463:in `block in _update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:99:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:929:in `_run_update_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/callbacks.rb:463:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/timestamp.rb:121:in `_update_record'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:1069:in `create_or_update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/callbacks.rb:455:in `block in create_or_update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:99:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:929:in `_run_save_callbacks'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/callbacks.rb:455:in `create_or_update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/timestamp.rb:126:in `create_or_update'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:648:in `save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/validations.rb:53:in `save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:302:in `block in save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/database_statements.rb:314:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:302:in `save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/suppressor.rb:54:in `save!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:782:in `block in update!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:780:in `update!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mini_scheduler-0.16.0/lib/mini_scheduler/manager.rb:134:in `process_queue'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mini_scheduler-0.16.0/lib/mini_scheduler/manager.rb:70:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mini_scheduler-0.16.0/lib/mini_scheduler/manager.rb:59:in `block (2 levels) in ensure_worker_threads'
¡Muchas gracias a quien pueda ayudar!
1 me gusta
simon
23 Septiembre, 2024 06:22
9
Mirando los detalles que proporcionaste, no me queda claro dónde se está activando el error en el código de Discourse. ¿Hay algún detalle en las pestañas “info” o “env” de la página de error? También hay un botón “share” en la parte inferior derecha de la página que mostrará todos los detalles del error.
No estoy seguro de que el error esté relacionado con el problema, pero parece que algo está fallando con los trabajos en segundo plano (sidekiq) en tu sitio.
También podría haber información útil en la página /sidekiq de tu sitio. Como usuario administrador, puedes verla en https://community.lezismore.org/sidekiq
3 Me gusta
th21
23 Septiembre, 2024 16:48
10
Revisé tu sitio web y está en chino tradicional, tal vez te encuentres en la misma situación que yo \nWrong activate url
3 Me gusta
¡Parece que estábamos enfrentando el mismo problema! Después de actualizar el enlace de la página de activación en la plantilla de correo electrónico de:
%{base_url}/user/activate-account/%{email_token}
a:
%{base_url}/u/activate-account/%{email_token}
todo empezó a funcionar bien. El problema probablemente ocurrió porque la plantilla de correo electrónico no se actualizó automáticamente debido a mis personalizaciones anteriores, lo que impidió que se aplicaran los cambios después de reconstruir la aplicación.
¡Un gran agradecimiento a @simon por la increíble paciencia al ayudarme a depurar, y a @th21 por la información!
Continuaré monitoreando el rendimiento de la aplicación y compartiré actualizaciones si surgen problemas. ¡Gracias de nuevo, chicos!
3 Me gusta
system
(system)
Cerrado
24 Octubre, 2024 17:52
12
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.