Inoltre, i nuovi commenti di Discourse hanno smesso di essere visualizzati dal nostro embed all’interno del nostro sito web Drupal. Utilizziamo con successo da anni le istruzioni di embed JavaScript da qui:
Tuttavia, per qualche motivo questo sembra aver smesso di funzionare di recente. Credo che l’ultimo post funzionante risalga all’inizio di questo mese. I post più vecchi vengono visualizzati in Discourse e nel modulo di embed, ma negli articoli più recenti, il blocco Discourse rimane bloccato sul testo Caricamento…
Il nostro modulo Discourse Drupal viene caricato dal seguente codice:
Ho confermato che il file “javascripts/embed.js” esiste ancora nello stesso percorso.
Questo è il blocco che viene mostrato nelle pagine degli articoli; ultimamente mostra solo “Caricamento discussione…”:
Non abbiamo apportato alcuna modifica negli ultimi anni al nostro embed o alla configurazione di Discourse. Ci sono state modifiche recenti alla funzionalità di Discourse che potrebbero aver causato questo problema? Qualsiasi aiuto per risolvere questo problema sarebbe molto apprezzato!
usiamo la stessa funzionalità di incorporamento sul nostro sito. presumo che discourseUrl e discouseEmbedUrl non siano quelli che hai pubblicato sopra e invece gli URL pertinenti del tuo forum?
altrimenti, il codice sembra a posto. so che la funzionalità di incorporamento funziona per la versione beta aggiornata di Discourse. abbiamo avuto un sacco di post incorporati la scorsa settimana. trovo strano che incorpori la prima parte del post ma il pulsante “mostra post completo” non funzioni. i nostri si caricano immediatamente
hai controllato la console per errori?
potresti sempre provare a disabilitare l’impostazione embed_truncate solo per vedere se pubblica l’intero testo. questo potrebbe aiutare a restringere la causa del problema.
Sì, è corretto, ho usato il segnaposto sitename solo per chiarezza.
Accidenti, beh, è un sollievo che sembri che la funzionalità di incorporamento di Discourse non sia rotta! Deve essere qualcosa dalla nostra parte.
Ho controllato i log di Discourse (discourse.sitename.com/logs) e vedo solo un sacco di avvisi di deprecazione come quelli di seguito:
Avviso di deprecazione: SiteSetting.enable_personal_messages è stato deprecato.
Posso sicuramente provare a disabilitare anche embed_truncate, lo cercherò dopo. Ma quella funzionalità ha funzionato per anni senza problemi, quindi non sono sicuro del perché si sia rotta…
prova a guardare nella console degli strumenti per sviluppatori per eventuali errori quando fai clic sul pulsante “mostra post completo”. Gli strumenti per sviluppatori sono accessibili facendo clic con il pulsante destro del mouse e selezionando “ispeziona”. Gli errori appariranno in rosso sul lato destro.
sì, la funzione di incorporamento non è assolutamente rotta. Succede più volte al giorno sul mio sito.
Credo che la nostra configurazione sia gestita; non vi ho apportato alcuna modifica, ma la nostra dashboard di Discourse mostra una data di ultimo aggiornamento di Discourse del 18 aprile. Guardando l’ultimo annuncio collegato a quello, sembra che sia la versione 3.0.3.
assicurati di eseguire anche la versione più recente di Discourse. potrebbe anche valere la pena vedere se la stessa cosa accade in modalità provvisoria.
Ottima idea, grazie! Ho appena controllato e vedo questo errore:
Uncaught DOMException: È stata specificata una stringa non valida o illegale
postUp embed-application.js:6
onload embed-application.js:36
EventHandlerNonNull* embed-application.js:25
<anonymous> embed-application.js:66
[embed-application-4e18c443be26cb7c50c56d1a8f39fcf176af9b4ae8e42243648f33c23d9b7eb9.js:5](https://conversation.spectrummagazine.org/assets/embed-application-4e18c443be26cb7c50c56d1a8f39fcf176af9b4ae8e42243648f33c23d9b7eb9.js)
postUp embed-application.js:6
onload embed-application.js:36
(Async: EventHandlerNonNull)
<anonymous> embed-application.js:25
<anonymous> embed-application.js:66
È così strano perché non ho apportato modifiche al codice o altro di recente. Tuttavia, ricordo che stavo usando Cloudflare il 2 di questo mese per rafforzare la sicurezza; potrei dover controllare se c’è qualcosa da quel lato che potrebbe bloccare gli script.
Ho visto un errore CSP nella Console degli strumenti per sviluppatori l’ultima volta che ho controllato questo, quindi forse questo potrebbe essere il problema, potenzialmente da parte di Cloudflare.
so che quando il nostro sito principale ha modificato la sua politica sui contenuti online e le impostazioni di sicurezza una volta, ha bloccato i nostri embed per alcuni giorni. l’effetto era diverso però e ha bloccato gli embed che andavano nell’altra direzione, non pubblicandoli nel nostro forum.
Ottima idea! Sai per caso quale impostazione di sicurezza è stata modificata per risolvere il problema?
Ho apportato alcune modifiche, quindi non sono sicuro di quale dovrei annullare specificamente.
Non ne ho idea, non gestisco quella parte del sito. Ho dovuto chiamare le persone che lo ospitano per ripristinare le impostazioni della policy di sicurezza.
Sono riuscito a individuare qual era il problema! Avevo contattato il nostro supporto gestito di Discourse e mi hanno fornito un indirizzo IP che avevamo precedentemente aggiunto a una blocklist sul nostro WAF, a causa di un’elevata quantità di traffico da quell’indirizzo. Si scopre che quell’indirizzo IP doveva essere consentito affinché Discourse potesse comunicare correttamente. Sono così felice che non fosse un problema da parte di Discourse!
Potrei avere lo stesso problema. Ho questi errori DOMException nella console di sviluppo del mio browser. Tuttavia, non uso Cloudflare. Il mio blog che incorpora l’iframe di Discourse è ospitato da Netlify, Discourse stesso da Communiteq.
Inizialmente ho pensato che questa modifica stesse causando il problema:
Ma ora penso che possa essere qualcos’altro? Qualsiasi aiuto sarebbe apprezzato.
Hai accesso alle impostazioni di sicurezza e/o di rete dal tuo server su Netlify? Dalla mia recente esperienza, se fossi nei tuoi panni, controllerei le tue impostazioni di sicurezza per vedere se ci sono stati indirizzi IP bloccati. Verificherei anche con il supporto di Communiteq, perché potrebbero essere in grado di confermare gli indirizzi IP necessari affinché il tuo server Netlify comunichi con Communiteq per eseguire correttamente gli script necessari per visualizzare le risorse di Discourse.
Non sono sicuro di cosa posso fare dal lato Netlify, ma indagherò. Dubito che il problema sia lì, perché tecnicamente le richieste provengono dai browser dei visitatori del mio sito, giusto? Se capisco come funziona, e per favore illuminami se non è così, questo è JavaScript lato client eseguito nel browser del visitatore del sito. Discourse vede il nome host del server nella richiesta, ma non l’IP. Il mio server blog non comunica con il server del forum. È comunque un’installazione di blog statica. È solo HTML con JavaScript lato client. Utilizza uno script per inviare i dati del post del blog a Discourse e caricare elementi dal forum in un iframe.
Il problema era effettivamente un bug nell’ultima versione di Discourse. Communiteq lo sta correggendo sulla mia istanza del forum. Per maggiori informazioni, vedi qui:
Il problema in questo argomento riguardava l’impossibilità di Discourse di “Mostra post completo” su Discourse perché il sito incorporato rifiutava di servire i contenuti del post del blog a Discourse.
Il problema nell’argomento di @fabsh è il risultato di una patch di sicurezza (più recente) in Discourse che contiene un problema.
Ciao, sto pubblicando un aggiornamento a questo, poiché alcune cose sono cambiate nella mia indagine su questo problema. Il problema persiste dall’aggiornamento alla versione 3.0.4; tutti i nuovi articoli creati hanno problemi a visualizzare il codice Discourse incorporato. Tutti gli articoli creati prima di questo aggiornamento non hanno problemi, quindi non è un blocco dell’indirizzo IP a causare questo.
Sembra che Discourse nell’ultima versione abbia modificato la logica di come i post vengono creati automaticamente dal codice di incorporamento, quindi ora il nuovo codice richiede l’URL canonico. Vedi l’argomento precedentemente collegato:
Tuttavia, questo interrompe completamente la funzionalità di incorporamento su siti come il mio. In precedenza utilizzavo l’ID del nodo in Drupal per incorporare, come si vede nel codice seguente:
Questo nuovo codice Discourse richiede invece l’uso dell’URL canonico, il che comporta la creazione di argomenti duplicati se qualcuno rinomina semplicemente il titolo dell’articolo. Questo è il motivo per cui utilizzavo l’ID del nodo, perché non cambia.
Sarebbe possibile rendere facoltativo questo nuovo URL canonico? Ho provato a modificare il mio codice di incorporamento per utilizzarlo, ma il problema di caricamento è tornato per tutti i post creati con il vecchio codice di incorporamento.
Quindi, al momento, con il nuovo codice Discourse in esecuzione sul mio sito di produzione, sono bloccato con una di queste due opzioni:
I nuovi articoli su Drupal mostrano “Caricamento…” ma non caricano mai il blocco di incorporamento dei commenti; i vecchi articoli creati prima di Discourse 3.0.4 si caricano correttamente.
Oppure,
I nuovi articoli su Drupal caricano correttamente il blocco di incorporamento dei commenti, ma tutti i vecchi articoli creati prima di Discourse 3.0.4 mostrano “Caricamento…” ma non caricano mai il blocco di incorporamento dei commenti.
C’è un modo per rendere facoltativa questa nuova funzionalità? Dover scegliere tra una di queste due opzioni mi mette in una situazione perdente.