L'intégration est CASSÉE dans 3.0.4 (stable)

J’ai le sentiment que ce changement

a cassé la façon dont j’utilise l’intégration sur mon site web. Quelqu’un peut-il m’indiquer ce qui a exactement été modifié ?

J’utilise Discourse pour créer des sujets pour les articles de mon blog (en tant que système de commentaires). Mon site web est divisé en deux parties pour deux langues, j’utilise donc deux hôtes pour filtrer les articles en anglais (/blog/somepost) et en allemand (/de/blog/somepost) dans différentes catégories de forum.

Les articles du côté allemand du site web ne s’intègrent plus depuis que mon Discourse a été mis à jour. Je suppose que cela a quelque chose à voir avec le correctif ci-dessus.

Toute aide pour essayer de résoudre ce problème serait grandement appréciée.

2 « J'aime »

D’un autre côté, il pourrait s’agir de ce problème :

Je rencontre certainement ces DOMExceptions. Encore une fois, toute aide serait grandement appréciée !

1 « J'aime »

oui, je regarderais les politiques et les paramètres de sécurité de votre forum et du site web intégré. la capture d’écran semble correcte. quel est le script que vous utilisez et qu’en est-il de vos autres paramètres d’intégration ? avez-vous apporté des modifications récentes ?

mon forum utilise cette fonctionnalité de publication intégrée plusieurs fois par jour et elle fonctionne très bien pour le moment, donc je sais qu’elle n’est pas défectueuse. nous utilisons la dernière version bêta et nous sommes hébergés, donc je suis confiant dans la configuration.

1 « J'aime »

Salut, merci d’essayer d’aider !

Je ne contrôle aucune politique de sécurité puisque les deux sites sont hébergés par des fournisseurs d’hébergement. Je doute qu’ils aient cassé ça. Mais je vais enquêter avec mon hébergeur Discourse.

J’utilise ce script sur le blog (c’est un moteur de site statique appelé Hugo) :

<script type="text/javascript">
  DiscourseEmbed = { discourseUrl: 'https://forum.fab.industries/',
                     discourseEmbedUrl: '{{ .Permalink }}' };

  (function() {
    var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
    d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
  })();
</script>

Je n’ai rien changé à cela depuis que je l’ai intégré il y a quelques mois.

Tout ce que j’ai changé, c’est un peu de CSS personnalisé que j’ai ajouté au thème du forum. Je vais le rétablir aujourd’hui et voir si cela résout le problème.

D’accord. Revenir à la version CSS précédente n’a rien changé. C’était un coup de poker de toute façon.

J’ai maintenant pu confirmer que l’intégration est cassée en général. La partie anglaise du blog a également cessé de fonctionner. Les nouvelles pages restent bloquées sur « Chargement de la discussion… »

Je suis maintenant presque certain que cela s’est produit lorsque mon fournisseur a mis à jour mon forum vers la version 3.0.4, mais je ne sais pas de quelle version ils m’ont mis à jour. Je suspecte donc toujours ce correctif :

Je pense que le fait que le navigateur génère ces erreurs liées au DOM n’est pas une coïncidence :

Désactiver le CSP dans les paramètres d’administration ne semble pas résoudre le problème.

Alors que main a ceci

TopicEmbed.import_remote(@embed_url, user: User.find_by(username_lower: username.downcase))

et stable a ceci

TopicEmbed.import_remote(user, @embed_url)

Notez l’ordre des paramètres.

Maintenant, le backport du correctif de sécurité a modifié la signature de la fonction sur stable vers le nouvel ordre des paramètres, donc

def self.import_remote(import_user, url, opts = nil)

est devenu

def self.import_remote(url, opts = nil)

et maintenant le paramètre url reçoit un objet User.

Changer l’appel de fonction résout le problème

diff --git a/lib/topic_retriever.rb b/lib/topic_retriever.rb
index b798df6cd7..6186ce5868 100644
--- a/lib/topic_retriever.rb
+++ b/lib/topic_retriever.rb
@@ -50,6 +50,6 @@ class TopicRetriever
     user = User.where(username_lower: username.downcase).first
     return if user.blank?

-    TopicEmbed.import_remote(user, @embed_url)
+    TopicEmbed.import_remote(@embed_url, user: user)
   end
 end

@blake

8 « J'aime »

J’ai soumis une PR qui corrige ce problème FIX broken topic embedding because of incomplete security patch (#22088) by communiteq · Pull Request #22184 · discourse/discourse · GitHub

9 « J'aime »

Merci @RGJ pour la correction, cette PR est maintenant fusionnée.

4 « J'aime »