Problème avec la page d'activation du compte après la mise à jour vers 3.4.0 (page blanche)

Salut l’équipe Discourse,

Merci de fournir un produit aussi fantastique ! Ma communauté et moi l’utilisons avec plaisir depuis des années. Récemment, nous avons rencontré un problème et j’apprécierais grandement toute aide.

Après la mise à niveau de Discourse 3.3.0 à 3.4.0, les nouveaux utilisateurs voient une page blanche (en-tête et pied de page uniquement) lorsqu’ils cliquent sur le lien de vérification par e-mail pour accéder à la page « activate-account ».


(le lien de test sera fourni à la fin de cet article)

Étapes déjà suivies :

  1. Vérification de la console développeur : l’erreur indique que la CSP bloque les scripts externes.

  2. Tentative de modification de la CSP via Cloudflare :


    Nous avons ajusté la politique et vidé le cache, mais cela n’a pas résolu le problème.

  3. Tentative de modification de la CSP via le panneau d’administration de Discourse : Ajout de ‘self’, ‘unsafe-eval’ et tentative de hachage SHA256. Nous avons également consulté cet article mais n’avons constaté aucun changement.

  4. Message d’erreur :


    Nous avons essayé diverses entrées (par exemple, ‘self’, ‘unsafe-eval’) et même défini la politique sur le mode « report only ». Toujours aucun effet.

  5. Vidage du cache : Aucun changement.

  6. Reconstruction de l’application : Reconstruction de Discourse et vidage du cache par la suite, mais le problème persiste.

Il est intéressant de noter que ce problème n’affecte pas tous les nouveaux utilisateurs. Nous avons constaté qu’environ 90 % de nos nouveaux utilisateurs rencontrent ce problème.

Toute suggestion ou solution serait grandement appréciée ! Merci !

Avez-vous essayé le mode sans échec ?

@pfaffman
Je viens d’essayer et j’ai vu ceci :

Un autre site signale des erreurs CSP liées au point de terminaison /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. Je ne suis pas au courant de problèmes similaires signalés dans le passé. Peut-être que quelque chose a changé, soit sur Cloudflare, soit dans Discourse 3.4.0.

Le point de terminaison /cdn-cgi/speculation est ajouté aux domaines enregistrés sur Cloudflare lorsque la fonctionnalité « Speed Brain » est activée. Speed Brain est conçu pour accélérer les performances d’un site Web en permettant à Cloudflare de précharger le contenu lorsqu’un utilisateur survole un lien. Je ne suis pas sûr que cela soit compatible avec Discourse.

Je vois que l’en-tête Speculation-Rules est renvoyé avec la réponse lorsque je visite https://community.lezismore.org/login. Cela indique que la fonctionnalité Speed Brain est activée. D’après la documentation de Cloudflare, il semble qu’elle soit activée par défaut.

Pouvez-vous essayer de désactiver Speed Brain dans l’onglet Speed de votre tableau de bord Cloudflare ? Les instructions pour le faire se trouvent ici : Speed Brain · Cloudflare Speed docs.

La section « Caveats » de la documentation que j’ai liée indique :

  • Speed Brain ne fonctionnera pas avec des configurations Content Security Policy :up_right_arrow: restrictives utilisant les attributs strict-dynamic ou nonce-{hash}.

Si Speed Brain est compatible avec Discourse, nous devrons trouver comment l’ajouter aux règles de sécurité du contenu.

3 « J'aime »

Merci pour votre réponse.

J’ai déjà désactivé le paramètre Speed Brain dans Cloudflare et vidé le cache comme suggéré, mais malheureusement, le problème persiste.

Voici le lien vers la page de compte de test actif d’aujourd’hui, pour ceux qui sont intéressés : https://community.lezismore.org/users/activate-account/34180b9eed9e1a1a1dbcca7eab66fb43

Êtes-vous capable de vous connecter au site ? Si oui, voyez-vous des messages d’erreur sur sa page de journaux d’erreurs (https://community.lezismore.org/logs) ?

1 « J'aime »

Oui, je peux me connecter au site web.
Voici la page de journalisation :

Job exception: can't write unknown attribute

Et les détails sont les suivants :

Message (23685 copies reported)

Job exception: can't write unknown attribute ``

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 « J'aime »

Il y a d’autres erreurs dont je ne suis pas sûr qu’elles soient pertinentes, mais je les fournis quand même à titre de référence, au cas où.

Message

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'

Un grand merci à quiconque voudra bien m’aider :folded_hands:

1 « J'aime »

D’après les détails que vous avez fournis, je ne vois pas clairement où l’erreur est déclenchée dans le code de Discourse. Y a-t-il des détails dans les onglets « info » ou « env » sur la page d’erreur ? Il y a aussi un bouton « share » en bas à droite de la page qui affichera tous les détails de l’erreur.

Je ne suis pas certain que l’erreur soit liée au problème, mais il semble que quelque chose ne fonctionne pas avec les tâches d’arrière-plan (sidekiq) sur votre site.

Il pourrait également y avoir des informations utiles sur la page /sidekiq de votre site. En tant qu’utilisateur administrateur, vous pouvez la consulter à l’adresse https://community.lezismore.org/sidekiq

3 « J'aime »

J’ai consulté votre site web et il est en chinois traditionnel, peut-être rencontrez-vous la même situation que moi

3 « J'aime »

Il semble que nous ayons rencontré le même problème ! Après avoir mis à jour le lien de la page d’activation dans le modèle d’e-mail de :

%{base_url}/user/activate-account/%{email_token}

à :

%{base_url}/u/activate-account/%{email_token}

tout a commencé à fonctionner correctement. Le problème est probablement survenu parce que le modèle d’e-mail n’a pas été mis à jour automatiquement en raison de mes personnalisations précédentes, ce qui a empêché l’application des modifications après la reconstruction de l’application.

Un grand merci à @simon pour son incroyable patience à m’aider à déboguer, et à @th21 pour les informations !

Je continuerai à surveiller les performances de l’application et partagerai des mises à jour si des problèmes surviennent. Encore une fois, merci les gars !

3 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.