Ciao Team Discourse,
Grazie per aver fornito un prodotto così fantastico! La mia community e io lo abbiamo apprezzato per anni. Recentemente, abbiamo riscontrato un problema e apprezzerei molto qualsiasi aiuto.
Dopo l’aggiornamento da Discourse 3.3.0 a 3.4.0, i nuovi utenti vedono una pagina vuota (solo intestazione e piè di pagina) quando fanno clic sul link di verifica e-mail per raggiungere la pagina “activate-account”.
(il link di test verrà fornito alla fine di questo articolo)
Passaggi intrapresi finora:
Controllata la Console per Sviluppatori : L’errore indica che CSP sta bloccando script esterni.
Tentativo di Modifica di CSP tramite Cloudflare :
Abbiamo modificato la policy e cancellato la cache, ma non ha risolto il problema.
Tentativo di Modifica di CSP tramite Pannello di Amministrazione di Discourse : Abbiamo aggiunto ‘self’, ‘unsafe-eval’ e tentato l’hashing SHA256. Abbiamo anche fatto riferimento a questo articolo ma non abbiamo riscontrato alcuna modifica.
Messaggio di errore:
Abbiamo provato vari input (ad es. ‘self’, ‘unsafe-eval’) e abbiamo persino impostato la policy in modalità “report only”. Ancora, nessun effetto.
Cancellata la Cache : Nessuna modifica.
Ricostruito l’App : Ricostruito Discourse e cancellata la cache in seguito, ma il problema persiste.
È interessante notare che questo problema non colpisce tutti i nuovi utenti. Abbiamo scoperto che circa il 90% dei nostri nuovi utenti riscontra questo problema.
Qualsiasi suggerimento o soluzione sarebbe molto apprezzato! Grazie!
pfaffman
(Jay Pfaffman)
21 Settembre 2024, 3:50pm
2
Hai provato la modalità provvisoria?
@pfaffman
Ho appena provato e ho visto questo:
simon
21 Settembre 2024, 8:35pm
4
Un altro sito segnala errori CSP relativi al 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 . Non sono a conoscenza di problemi simili segnalati in passato. Forse qualcosa è cambiato in Cloudflare o in Discourse 3.4.0.
Il endpoint /cdn-cgi/speculation viene aggiunto ai domini registrati su Cloudflare quando la funzionalità “Speed Brain” è abilitata. Speed Brain è inteso per velocizzare le prestazioni di un sito web consentendo a Cloudflare di precaricare i contenuti quando un utente passa il mouse su un link. Non sono sicuro che sia compatibile con Discourse.
Vedo che l’header Speculation-Rules viene restituito con la risposta quando visito https://community.lezismore.org/login. Ciò indica che la funzionalità Speed Brain è abilitata. Dalla documentazione di Cloudflare, sembra che sia abilitata per impostazione predefinita.
Puoi provare a disabilitare Speed Brain dalla scheda Speed del tuo pannello di controllo Cloudflare? Le istruzioni su come farlo sono qui: Speed Brain · Cloudflare Speed docs .
La sezione “Caveats” della documentazione che ho collegato dice:
Speed Brain non funzionerà con configurazioni restrittive di Content Security Policy che utilizzano gli attributi strict-dynamic o nonce-{hash}.
Se Speed Brain è compatibile con Discourse, dovremo capire come aggiungerlo alle regole di Content Security.
3 Mi Piace
Grazie per la tua risposta.
Ho già disabilitato l’impostazione Speed Brain in Cloudflare e svuotato la cache come suggerito, ma sfortunatamente il problema persiste.
Ecco il link alla pagina di test del nuovo account attivo di oggi, per chiunque fosse interessato: https://community.lezismore.org/users/activate-account/34180b9eed9e1a1a1dbcca7eab66fb43
simon
22 Settembre 2024, 8:27am
6
Riesci ad accedere al sito? Se sì, vedi messaggi di errore nella pagina dei log degli errori (https://community.lezismore.org/logs )?
1 Mi Piace
Sì, riesco ad accedere al sito web.
Ecco la pagina di log:
Job exception: can't write unknown attribute
e i dettagli sono i seguenti:
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 Mi Piace
Ci sono altri errori che non sono sicuro siano rilevanti, ma li fornisco comunque come riferimento, per ogni evenienza.
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 grande grazie a chiunque voglia aiutare
1 Mi Piace
simon
23 Settembre 2024, 6:22am
9
Guardando i dettagli che hai fornito, non mi è chiaro dove nel codice di Discourse venga attivato l’errore. Ci sono dettagli nelle schede “info” o “env” nella pagina dell’errore? C’è anche un pulsante “share” in basso a destra nella pagina che visualizzerà tutti i dettagli dell’errore.
Non sono sicuro che l’errore sia correlato al problema, ma sembra che qualcosa non funzioni con i processi in background (sidekiq) sul tuo sito.
Potrebbero esserci anche informazioni utili nella pagina /sidekiq del tuo sito. Come utente amministratore, puoi visualizzarla su https://community.lezismore.org/sidekiq
3 Mi Piace
th21
23 Settembre 2024, 4:48pm
10
Ho controllato il tuo sito web ed è in cinese tradizionale, forse ti imbatti nella stessa situazione in cui mi sono trovato io
3 Mi Piace
Sembra che stessimo affrontando lo stesso problema! Dopo aver aggiornato il link della pagina di attivazione nel modello di email da:
%{base_url}/user/activate-account/%{email_token}
a:
%{base_url}/u/activate-account/%{email_token}
tutto ha iniziato a funzionare correttamente. Il problema si è probabilmente verificato perché il modello di email non si è aggiornato automaticamente a causa delle mie precedenti personalizzazioni, il che ha impedito l’applicazione delle modifiche dopo la ricostruzione dell’app.
Un grande ringraziamento a @simon per l’incredibile pazienza nell’aiutarmi nel debug, e a @th21 per le informazioni!
Continuerò a monitorare le prestazioni dell’applicazione e condividerò aggiornamenti se dovessero sorgere problemi. Ancora una volta, grazie ragazzi!
3 Mi Piace
system
(system)
Chiuso
24 Ottobre 2024, 5:52pm
12
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.