Embedding está QUEBRADO em 3.0.4 (estável)

Suspeito que esta alteração

quebrou a forma como uso a incorporação no meu site. Alguém pode me indicar o que exatamente foi alterado?

Uso o Discourse para criar tópicos para posts no meu blog (como sistema de comentários). Meu site é dividido em duas partes para dois idiomas, então uso dois hosts para filtrar os posts em inglês (/blog/somepost) e alemão (/de/blog/somepost) em categorias de fórum diferentes.

Os posts do lado alemão do site não estão mais sendo incorporados desde que meu Discourse foi atualizado. Presumo que tenha algo a ver com o patch acima.

Qualquer ajuda para tentar resolver isso seria muito apreciada.

2 curtidas

Por outro lado, pode ser o que quer que seja este problema:

Eu certamente tenho essas DOMExceptions aparecendo. Novamente, qualquer ajuda seria muito apreciada!

1 curtida

sim, eu estaria olhando as políticas e configurações de segurança para o seu fórum e o site incorporado. a captura de tela parece boa. qual é o script que você está usando e o que acontece com suas outras configurações de incorporação? você fez alguma alteração recente lá?

meu fórum usa este recurso de postagem incorporada várias vezes ao dia e está funcionando muito bem no momento, então sei que não está quebrado. estamos usando a versão beta mais recente e estamos hospedados, então estou confiante na configuração.

1 curtida

Ei, obrigado por tentar ajudar!

Eu não tenho controle sobre nenhuma política de segurança, já que ambos os sites são hospedados por provedores de hospedagem. De alguma forma, duvido que eles tenham quebrado isso. Mas vou investigar com meu provedor de hospedagem do Discourse.

Eu uso este script no blog (é um motor de site estático chamado 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>

Eu não mudei nada disso desde que o integrei pela primeira vez, há alguns meses.

Tudo o que eu mudei foi um pouco de CSS personalizado que adicionei ao tema do fórum. Vou reverter isso hoje e ver se resolve o problema.

Ok. Reverter o CSS não adiantou nada. Já era um tiro no escuro mesmo.

Agora também pude confirmar que a incorporação está quebrada em geral. O lado em inglês do blog também parou de funcionar. Novas páginas ficam presas em “Carregando discussão…”

Agora tenho quase certeza de que isso quebrou quando meu provedor atualizou meu fórum para 3.0.4, mas não sei de qual versão eles me atualizaram. Então, ainda suspeito deste patch de alguma forma:

Estou pensando que o fato de o navegador estar lançando esses erros relacionados ao DOM não é coincidência:

Desativar o CSP nas configurações de administrador não parece corrigir isso.

Então main tem isso

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

e stable tem isso

TopicEmbed.import_remote(user, @embed_url)

Note a ordem dos parâmetros.

Agora o backport do patch de segurança mudou a assinatura da função no stable para a nova ordem de parâmetros, então

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

tornou-se

def self.import_remote(url, opts = nil)

e agora o parâmetro url recebe um objeto User.

Mudar a chamada da função resolve o problema

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 curtidas

Enviei um PR que corrige este problema FIX broken topic embedding because of incomplete security patch (#22088) by communiteq · Pull Request #22184 · discourse/discourse · GitHub

9 curtidas

Obrigado @RGJ pela correção, esse PR foi mesclado.

4 curtidas