Tem certeza de que o parâmetro de consulta ?discuss=1 não é a causa do problema?
Existem permissões de segurança na sua categoria de blog, ou ela está configurada para permitir que o grupo “todos” Crie / Responda / Veja?
Em qual versão do Discourse seu site está?
Além disso, qual é a mensagem de erro completa que você vê após o texto Failed to execute postMessage on DOMWindow? Eu esperaria que fosse algo como The target origin provided (<target_url>) does not match the recipient window's origin (<origin_url>).
Tenho certeza de que não tem nada a ver com o parâmetro ?discuss=1. Tive o mesmo problema sem ele — é apenas que este é um site ao vivo e não quero mostrar um bloco de erro enorme para nossos usuários. Mas, já que você perguntou, editei o site e ativei o embed de JavaScript apenas em um de nossos posts muito antigos, onde não deve haver visitantes. Então, sem string de consulta. (Atualizei meu primeiro post para refletir isso)
VM469 embed-application-9cef8308c816fc1d83137e63d6c556c6cc2b68fe2b6e5ce16cca6766ba2c0ae4.js:1 Falha ao executar ‘postMessage’ no ‘DOMWindow’: A origem de destino fornecida (‘https://discuss.royaleapi.com’) não corresponde à origem da janela de destino (‘https://royaleapi.com’).
Categoria do Blog
Esta é uma categoria pública — aberta a todos. Na verdade, não há posts. Acabei de criar um novo post agora para ver se é necessário ter um único item na categoria.
Não tenho certeza se isso pode ser relevante, mas vejo alguns erros nos logs, embora não saiba exatamente o que são:
[Sex 06 Nov 2020 16:47:14 UTC] Domínios não alterados.
[Sex 06 Nov 2020 16:47:14 UTC] Ignorado, próximo horário de renovação: Seg 04 Jan 2021 08:07:59 UTC
[Sex 06 Nov 2020 16:47:14 UTC] Adicione '--force' para forçar a renovação.
[Sex 06 Nov 2020 16:47:14 UTC] Instalando chave em: /shared/ssl/discuss.royaleapi.com_ecc.key
[Sex 06 Nov 2020 16:47:14 UTC] Instalando cadeia completa em: /shared/ssl/discuss.royaleapi.com_ecc.cer
[Sex 06 Nov 2020 16:47:14 UTC] Executando comando de recarga: sv reload nginx
aviso: nginx: não foi possível abrir supervise/ok: arquivo não existe
[Sex 06 Nov 2020 16:47:14 UTC] Erro de recarga para :
runsvdir iniciado, PID é 663
ok: run: redis: (pid 677) 0s
chgrp: grupo inválido: 'syslog'
ok: run: postgres: (pid 675) 0s
rsyslogd: imklog: não foi possível abrir o log do kernel (/proc/kmsg): Operação não permitida.
rsyslogd: falha na ativação do módulo imklog [v8.1901.0 tente https://www.rsyslog.com/e/2145 ]
supervisor pid: 671 unicorn pid: 702
Além disso, por favor, me avise se alguma parte disso deve ser ofuscada. Como já publiquei a URL, imaginei que não haveria problema, já que esses locais de arquivo parecem ser padrão para a configuração.
@simon Isso é algo com o qual você pode me ajudar? Esse é o comportamento esperado ou será corrigido em uma versão futura?
Adicionamos este fórum principalmente para permitir comentários nas páginas do nosso site e, se isso não funcionar, precisaremos procurar outras soluções.
Sim, minha captura de tela mostrava o problema, mas desde então eu já a alterei para /blog/.*, pois percebi que provavelmente está usando regex. No entanto, o problema persiste.
O erro que recebo no console parece mais um problema de CORS do que qualquer outra coisa.
_embed-application-9cef8308c816fc1d83137e63d6c556c6cc2b68fe2b6e5ce16cca6766ba2c0ae4.js:7
Falha ao executar 'postMessage' no 'DOMWindow':
A origem de destino fornecida ('https://discuss.royaleapi.com')
não corresponde à origem da janela de destino ('https://royaleapi.com').
Na página de configurações de incorporação do Discourse, você definiu a configuração “Nome de usuário para criação de tópicos”? Se não estiver definida, você receberá o erro Failed to execute 'postMessage' on 'DOMWindow'.
@simon Sim, o nome de usuário para criação de tópicos está definido como system. Também tentei definir como meu próprio nome de usuário e obtive o mesmo erro.
Isso poderia ser o motivo? Parece que os próprios scripts não possuem cabeçalhos access-control-allow-origin, mesmo que o domínio os tenha. Devo tentar usar minha própria configuração do nginx e não usar o que está embutido na imagem do Docker?
Para resolver outro problema Unable to generate preview for URLs - #4 by seeminglee, ativei as requisições HEAD no site, e agora todas as discussões apareceram, o que, por sua vez, fez com que os tópicos fossem gerados automaticamente para minhas postagens de blog.
Isso é incrível — não consigo acreditar que me envolvi na busca por determinar se era um problema relacionado ao CORS, quando na verdade estava relacionado a requisições HEAD. Talvez isso precise ser especificado em algum lugar na documentação.
Possivelmente, isso deveria ser adicionado à seção de Solução de Problemas de Embed Discourse comments on another website via Javascript. Não tenho certeza de quão comum é ter as requisições HEAD desativadas, mas é um problema difícil de rastrear para sites onde elas foram desativadas.
Bom, se você se deu ao trabalho de bloquear solicitações HEAD para URLs que respondem a solicitações GET e violam a RFC, é de se esperar que haja alguma quebra, certo?
Para ser honesto, eu não percebi que existiam serviços que dependiam disso. Eu não teria “desativado” o método se soubesse que ele era necessário.
Além disso, só para deixar claro: não é que eu me esforce para desativar o método. Eu simplesmente não escrevi rotas para dar suporte ao método HEAD. Basicamente, o que fiz agora foi adicionar uma função para responder a todas as requisições HEAD para endpoints válidos.
Sim, por favor: atualize a seção de Solução de Problemas com isso. Estou travado em questões de segurança de CORS/Frame e espero que seguir os passos de @seeminglee possa ajudar. Como habilitar solicitações HEAD?
@willywongi Você pode estar confuso sobre qual era o meu problema, então deixe-me explicar o que aconteceu.
Segui os passos, mas não consegui fazer os comentários serem incorporados no site.
Descobri que meu aplicativo Discourse (instalado em um domínio diferente) não consegue “verificar” se meus posts de blog existem porque meu site principal não implementava o método HEAD nessas URLs.
Após implementar o manipulador para requisições HEAD nesses caminhos, a incorporação funcionou.
Para verificar se você tem o mesmo problema que eu, execute o curl contra a URL que contém o post de blog ou onde deseja que a incorporação de comentários apareça.
Por exemplo, se sua URL for https://example.com/blog/post-incrivel, vá ao terminal e execute
curl https://example.com/blog/post-incrivel -I
Isso executará uma requisição HEAD para essa URL e mostrará o resultado. Se o código de status for qualquer coisa diferente de 200 (esse é o número na primeira linha da resposta), por exemplo:
HTTP/2 200
então o servidor não implementa o método HEAD (OU tem algum problema ao responder a ele).
Se a resposta FOR 200, então o problema da incorporação não tem nada a ver com requisições HEAD.
Encontrei isso e o problema acabou sendo que alterei a forma como o "Nome de usuário para criação de tópico" era chamado e esqueci de atualizá-lo na página de Incorporação, acho que ele tentou criar o tópico e não encontrou o nome de usuário. Assim que atualizei na página de configurações de incorporação, o erro desapareceu.