Problem mit der Seite 'Konto aktivieren' nach Update auf 3.4.0 (leere Seite)

Hallo Discourse Team,

vielen Dank für die Bereitstellung eines so fantastischen Produkts! Meine Community und ich nutzen es seit Jahren gerne. Kürzlich sind wir auf ein Problem gestoßen und würden uns sehr über jede Hilfe freuen.

Nach dem Upgrade von Discourse 3.3.0 auf 3.4.0 sehen neue Benutzer eine leere Seite (nur Header und Footer), wenn sie auf den E-Mail-Verifizierungslink klicken, um zur Seite „activate-account“ zu gelangen.


(Testlink wird am Ende dieses Artikels bereitgestellt)

Bisher unternommene Schritte:

  1. Entwicklerkonsole überprüft: Der Fehler zeigt an, dass CSP externe Skripte blockiert.

  2. Versuch, CSP über Cloudflare zu ändern:


    Die Richtlinie wurde angepasst und der Cache gelöscht, aber das Problem wurde nicht behoben.

  3. Versuch, CSP über das Discourse Admin Panel zu ändern: ‘self’, ‘unsafe-eval’ hinzugefügt und SHA256-Hashing versucht. Wir haben uns auch auf diesen Artikel bezogen, aber keine Änderung festgestellt.

  4. Fehlermeldung:


    Verschiedene Eingaben (z. B. ‘self’, ‘unsafe-eval’) ausprobiert und die Richtlinie sogar in den Modus „nur melden“ versetzt. Immer noch keine Auswirkung.

  5. Cache geleert: Keine Änderung.

  6. App neu erstellen: Discourse neu erstellt und danach den Cache geleert, aber das Problem besteht weiterhin.

Interessanterweise betrifft dieses Problem nicht jeden neuen Benutzer. Wir haben festgestellt, dass etwa 90 % unserer neuen Benutzer von diesem Problem betroffen sind.

Jeder Vorschlag oder jede Lösung wäre sehr willkommen! Vielen Dank!

Haben Sie den abgesicherten Modus versucht?

@pfaffman
Habe es gerade versucht und Folgendes gesehen:

Es gibt eine weitere Website, die CSP-Fehler im Zusammenhang mit dem Endpunkt /cdn-cgi/speculation meldet: Refused to load the script 'site.com/cdn-cgi/speculation' because it violates the following Content Security Policy directive - #2 by simon. Mir sind keine ähnlichen Probleme bekannt, die in der Vergangenheit gemeldet wurden. Möglicherweise hat sich entweder bei Cloudflare oder in Discourse 3.4.0 etwas geändert.

Der Endpunkt /cdn-cgi/speculation wird zu Domains hinzugefügt, die auf Cloudflare registriert sind, wenn die Funktion „Speed Brain“ aktiviert ist. Speed Brain soll die Leistung einer Website verbessern, indem es Cloudflare ermöglicht, Inhalte vorab abzurufen, wenn ein Benutzer mit der Maus über einen Link fährt. Ich bin mir nicht sicher, ob dies mit Discourse kompatibel ist.

Ich sehe, dass der Header Speculation-Rules mit der Antwort zurückgegeben wird, wenn ich https://community.lezismore.org/login besuche. Das deutet darauf hin, dass die Funktion Speed Brain aktiviert ist. Aus den Cloudflare-Dokumenten geht hervor, dass sie standardmäßig aktiviert ist.

Können Sie versuchen, Speed Brain im Tab „Speed“ Ihres Cloudflare-Dashboards zu deaktivieren? Anweisungen dazu finden Sie hier: Speed Brain · Cloudflare Speed docs.

Im Abschnitt „Caveats“ der von mir verlinkten Dokumentation heißt es:

  • Speed Brain funktioniert nicht mit restriktiven Content Security Policy :up_right_arrow:-Konfigurationen, die die Attribute strict-dynamic oder nonce-{hash} verwenden.

Wenn Speed Brain mit Discourse kompatibel ist, müssen wir herausfinden, wie wir es zu den Content Security-Regeln hinzufügen können.

3 „Gefällt mir“

Vielen Dank für Ihre Antwort.

Ich habe die Einstellung “Speed Brain” in Cloudflare bereits deaktiviert und den Cache wie vorgeschlagen geleert, aber leider besteht das Problem weiterhin.

Hier ist der Link zur heutigen neuen Testseite für aktive Konten, falls jemand interessiert ist: https://community.lezismore.org/users/activate-account/34180b9eed9e1a1a1dbcca7eab66fb43

Können Sie sich auf der Website anmelden? Wenn ja, sehen Sie Fehlermeldungen auf der Seite mit den Fehlerprotokollen (https://community.lezismore.org/logs)?

1 „Gefällt mir“

Ja, ich kann mich auf der Website anmelden.
Hier ist die Log-Seite:

Job exception: can't write unknown attribute

und die Details sind wie folgt:

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 „Gefällt mir“

Es gibt einige andere Fehler, bei denen ich mir nicht sicher bin, ob sie relevant sind, aber ich gebe sie der Vollständigkeit halber an, nur für den Fall.

Nachricht

Job-Ausnahme: PG::SyntaxError: FEHLER:  zero-length delimited identifier at or near ""
ZEILE 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:782: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'

Vielen Dank an alle, die helfen wollen :folded_hands:

1 „Gefällt mir“

Basierend auf den von Ihnen bereitgestellten Details ist mir nicht klar, wo im Discourse-Code der Fehler ausgelöst wird. Gibt es Details auf den Registerkarten „Info“ oder „Env“ auf der Fehlerseite? Es gibt auch eine Schaltfläche „Teilen“ unten rechts auf der Seite, die alle Fehlerdetails anzeigt.

Ich bin mir nicht sicher, ob der Fehler mit dem Problem zusammenhängt, aber es scheint, dass auf Ihrer Website etwas mit Hintergrundaufträgen (Sidekiq) schiefgeht.

Es könnten auch nützliche Informationen auf der Seite „/sidekiq“ Ihrer Website vorhanden sein. Als Administrator können Sie sie unter https://community.lezismore.org/sidekiq einsehen.

3 „Gefällt mir“

Ich habe Ihre Website überprüft und sie ist in traditionellem Chinesisch, vielleicht sind Sie in die gleiche Situation geraten wie ich

3 „Gefällt mir“

Es scheint, wir hatten das gleiche Problem! Nachdem ich den Link zur Aktivierungsseite in der E-Mail-Vorlage von:

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

zu:

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

geändert habe, funktionierte alles wieder einwandfrei. Das Problem trat wahrscheinlich auf, weil die E-Mail-Vorlage aufgrund meiner vorherigen Anpassungen nicht automatisch aktualisiert wurde, was verhinderte, dass Änderungen nach dem Neuerstellen der App angewendet wurden.

Ein großes Dankeschön an @simon für die unglaubliche Geduld bei der Fehlersuche und an @th21 für die Informationen!

Ich werde die Leistung der Anwendung weiterhin überwachen und Updates teilen, falls Probleme auftreten. Nochmals vielen Dank, Leute!

3 „Gefällt mir“

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