Além disso, novos comentários do Discourse pararam de aparecer em nosso embed do nosso site Drupal. Temos usado com sucesso as instruções de embed JavaScript abaixo por anos:
No entanto, por algum motivo, isso parece ter parado de funcionar recentemente. Acredito que a última postagem que funcionou foi por volta do dia 1º deste mês. Postagens mais antigas são exibidas no Discourse e no módulo de embed, mas em artigos mais recentes, o bloco do Discourse fica travado no texto “Loading…”.
Nosso módulo Discourse Drupal carrega a partir do seguinte código:
Confirmei que o arquivo “javascripts/embed.js” ainda existe no mesmo caminho.
Este é o bloco que é mostrado nas páginas de artigos; ele mostra apenas “Loading Discussion…” ultimamente:
Não fizemos nenhuma alteração nos últimos anos em nosso embed ou configuração do Discourse. Houve alguma alteração recente na funcionalidade do Discourse que poderia quebrar isso? Qualquer ajuda para corrigir isso seria muito apreciada!
usamos a mesma funcionalidade de incorporação em nosso site. presumo que discourseUrl e discouseEmbedUrl não sejam o que você postou acima e, em vez disso, sejam os URLs relevantes do seu fórum?
caso contrário, o código parece bom. sei que a funcionalidade de incorporação está funcionando para o Discourse beta atualizado. tivemos muitos posts incorporados esta semana. acho estranho que ele esteja incorporando a primeira parte do post, mas o botão “mostrar post completo” não esteja funcionando. os nossos carregam imediatamente
você verificou o console em busca de erros?
você sempre pode tentar desativar a configuração embed_truncate apenas para ver se ele posta o texto inteiro. isso pode ajudar a reduzir a causa do problema.
Sim, está correto, usei o placeholder sitename apenas para clareza.
Droga, ainda bem que parece que a funcionalidade de incorporação do Discourse não está quebrada! Deve ser algo do nosso lado.
Verifiquei os logs do Discourse (discourse.sitename.com/logs) e só vejo muitos avisos de depreciação como abaixo:
Aviso de depreciação: SiteSetting.enable_personal_messages foi depreciado.
Posso definitivamente tentar desativar o embed_truncate também, vou procurar por isso em seguida. Mas essa funcionalidade funcionou por anos sem problemas, então não tenho certeza por que ela quebraria…
tente verificar o console de ferramentas do desenvolvedor em busca de erros ao clicar no botão “mostrar postagem completa”. as ferramentas do desenvolvedor podem ser acessadas clicando com o botão direito e em “inspecionar”. os erros aparecerão em vermelho no lado direito.
sim, o recurso de incorporação definitivamente não está quebrado. é algo que acontece várias vezes ao dia no meu site.
Acredito que nossa configuração esteja gerenciada; não fiz nenhuma alteração nela, mas nosso painel do Discourse mostra uma data de última atualização do Discourse de 18 de abril. Olhando o último anúncio vinculado a isso, parece que é a versão 3.0.3.
certifique-se de que você também está executando a versão mais recente do Discourse. também pode valer a pena ver se a mesma coisa está acontecendo no modo de segurança.
Essa é uma boa ideia, obrigado! Acabei de verificar e vejo este erro:
Uncaught DOMException: Uma string inválida ou ilegal foi especificada
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
É tão estranho porque não fiz nenhuma alteração no código nem nada recentemente. No entanto, lembro-me de que estava usando o Cloudflare no dia 2 deste mês para fortalecer a segurança; talvez eu precise verificar se há algo nesse sentido que possa estar bloqueando scripts.
Vi um erro de CSP no Console de Ferramentas do Desenvolvedor da última vez que verifiquei isso, então talvez esse possa ser o problema, potencialmente no lado do Cloudflare.
sei que quando nosso site principal editou sua política de conteúdo online e configurações de segurança uma vez, isso bloqueou nossos embeds por alguns dias. o efeito foi diferente, porém, e bloqueou os embeds indo na outra direção, não postando-os em nosso fórum.
Ooh, boa ideia! Você por acaso sabe qual configuração de segurança precisou ser alterada para corrigir isso?
Fiz algumas alterações, então não tenho certeza de qual especificamente devo reverter.
Consegui identificar qual era o problema! Entrei em contato com o suporte gerenciado do Discourse e eles forneceram um endereço IP que havíamos adicionado anteriormente a uma lista de bloqueio em nosso WAF, devido a um alto volume de tráfego desse endereço. Acontece que esse endereço IP precisava ser permitido para que o Discourse se comunicasse corretamente. Fico muito feliz que não tenha sido um problema do lado do Discourse!
Acho que posso estar tendo o mesmo problema. Tenho esses erros DOMException no console de desenvolvedor do meu navegador. No entanto, não uso Cloudflare. Meu blog que incorpora o iframe do Discourse é hospedado pela Netlify, e o Discourse em si pela Communiteq.
Primeiro pensei que essa alteração estava causando o problema:
Mas agora acho que pode ser outra coisa? Qualquer ajuda seria apreciada.
Você tem acesso às configurações de segurança e/ou rede do seu servidor no Netlify? Pela minha experiência recente, se eu estivesse no seu lugar, eu verificaria as configurações de segurança para ver se algum endereço IP foi bloqueado. Eu verificaria novamente com o suporte da Communiteq também, pois eles podem confirmar os endereços IP necessários para que seu servidor Netlify se comunique com a Communiteq para executar com sucesso os scripts necessários para exibir os recursos do Discourse.
Não tenho certeza do que posso fazer do lado do Netlify, mas vou investigar. Duvido que o problema esteja lá, porque tecnicamente as solicitações vêm dos navegadores dos visitantes do meu site, certo? Se eu entendi corretamente como isso funciona, e por favor, me ilumine se eu não entendi, este é um JavaScript do lado do cliente executado no navegador do visitante do site. O Discourse vê o nome do host do servidor na solicitação, mas não o IP. Meu servidor de blog não se comunica com o servidor do fórum. É uma instalação de blog estática de qualquer maneira. É apenas HTML com JavaScript do lado do cliente. Ele usa um script para enviar os dados da postagem do blog para o Discourse e carregar coisas do fórum em um iframe.
O problema foi, de fato, um bug na versão mais recente do Discourse. A Communiteq está corrigindo isso na minha instância do fórum. Para mais informações, veja aqui:
O problema neste tópico era sobre a incapacidade do Discourse de “Mostrar postagem completa” no Discourse porque o site incorporado se recusava a servir o conteúdo da postagem do blog para o Discourse.
O problema no tópico de @fabsh é o resultado de um (mais recente) patch de segurança no Discourse que contém um problema.
Olá, estou postando uma atualização sobre isso, pois algumas coisas mudaram em minha investigação sobre este problema. O problema persiste desde a atualização para a versão 3.0.4; todos os artigos recém-criados estão tendo problemas para exibir o código de incorporação do Discourse. Todos os artigos criados antes desta atualização não apresentam problemas, portanto, não é um bloqueio de endereço IP que está causando isso.
Parece que o Discourse na versão mais recente mudou a lógica de como as postagens são criadas automaticamente pelo código de incorporação, então agora o novo código requer a URL canônica. Veja o tópico previamente vinculado:
No entanto, isso quebra totalmente a funcionalidade de incorporação em sites como o meu. Eu estava usando anteriormente o Node ID no Drupal para incorporar, visto no código abaixo:
Este novo código do Discourse requer que a URL canônica seja usada em vez disso, o que resulta na criação de tópicos duplicados se alguém simplesmente renomear o título do artigo. Esse é o motivo pelo qual eu estava usando o Node ID, porque ele não muda.
Seria possível tornar esta nova URL canônica opcional? Tentei mudar meu código de incorporação para usá-la, mas o problema de carregamento voltou para todas as postagens criadas usando o código de incorporação antigo.
Portanto, no momento, com o novo código do Discourse rodando em meu site de Produção, estou preso a uma destas duas opções:
Artigos recém-criados no Drupal mostram “Carregando…” mas nunca carregam o bloco de incorporação de comentários; artigos antigos criados antes do Discourse 3.0.4 carregam normalmente.
Ou,
Artigos recém-criados no Drupal carregam o bloco de incorporação de comentários normalmente, mas todos os artigos antigos criados antes do Discourse 3.0.4 mostram “Carregando…” mas nunca carregam o bloco de incorporação de comentários.
Existe alguma maneira de tornar este novo recurso opcional? Ter que escolher entre uma destas opções me coloca em uma situação de perda.