TL;DR: O Discourse exibe “Erro ao incorporar” independentemente dos hosts que eu permito nas configurações de incorporação.
Tenho um site publicado em foo.com que incorpora comentários do fórum Discourse em forum.foo.com, o que está funcionando perfeitamente. Ao acessar, por exemplo, https://foo.com/blog/2019-11-22/foo-0.9.6-released, os comentários incorporados aparecem corretamente. Neste caso, o código do script para a incorporação no código-fonte da página se parece com isto:
<div id='discourse-comments'></div>
<script type="text/javascript">
DiscourseEmbed = { discourseUrl: 'https://forum.foo.com/', discourseEmbedUrl: 'https://foo.com/blog/2019-11-22/foo-0.9.6-released' };
(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>
Também tenho uma versão de desenvolvimento do site rodando no meu computador local em localhost, onde estou com problemas na incorporação — ela continua exibindo “Erro ao incorporar” em vez de mostrar os comentários dentro do HTML gerado e retornado pelo fórum. Ou seja, vejo o logotipo do fórum e um link para ele no canto superior direito da área de incorporação, mas, em vez de listar os comentários, recebo apenas essa mensagem de erro.
Ao acessar, por exemplo, http://localhost:1313/blog/2019-11-22-foo-0.9.6-released/, que é a página equivalente à do site de produção, o código do script para a incorporação no código-fonte da página se parece com isto:
<div id='discourse-comments'></div>
<script type="text/javascript">
DiscourseEmbed = { discourseUrl: 'https://forum.foo.com/', discourseEmbedUrl: 'http://localhost:1313/blog/2019-11-22-foo-0.9.6-released/' };
(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>
Testei tanto com quanto sem a barra final na configuração discourseEmbedUrl, mas não faz diferença alguma.
Não tenho acesso direto ao servidor onde o fórum está rodando, mas entrei no painel administrativo do fórum e tentei adicionar vários hosts permitidos nas configurações de incorporação. As configurações atuais, para o site de produção que funciona com incorporação, são:
"Hosts Permitidos", "Nome da Classe", "Lista Branca de Caminhos", "Publicar na Categoria"
foo.com, <vazio>, /blog/.*, blog
O que adicionei para tentar fazer funcionar na minha versão de desenvolvimento local em localhost é:
"Hosts Permitidos", "Nome da Classe", "Lista Branca de Caminhos", "Publicar na Categoria"
localhost, <vazio>, /blog/.*, blog
localhost:1313, <vazio>, /blog/.*, blog
<meu IP externo/público conforme visto pelo servidor do fórum>, <vazio>, /blog/.*, blog
<meu IP externo/público conforme visto pelo servidor do fórum>:1313, <vazio>, /blog/.*, blog
Mas nada disso faz funcionar; continuo recebendo a mesma mensagem de “Erro ao incorporar”.
Estou relutante em mergulhar no código-fonte e tentar depurar isso; prefiro obter alguma orientação sobre o que o Discourse verifica ao determinar que deve gerar essa mensagem de erro. Alguém pode me dizer isso e como corrigir? Deveria ser bem simples, mas o Discourse está agindo como uma caixa preta aqui.
Li tudo em Embed Discourse comments on another website via Javascript, mas não fornece informações mais úteis.

