O problema parece ser que, em um ambiente de desenvolvimento local, o Discourse está definindo o seguinte cabeçalho:
content-encoding: null
Meu servidor Apache local não consegue lidar com o cabeçalho content-encoding: null. Do meu shell do wp, uma solicitação para wp_remote_get("http://localhost:4200/site.json") falha com o erro que postei acima, enquanto uma solicitação para um site de produção do Discourse, por exemplo, wp_remote_get("https://meta.discourse.org/site.json") funciona sem problemas.
Minha solução temporária para o problema é comentar esta linha na minha instalação local do Discourse: https://github.com/discourse/discourse/blob/main/app/assets/javascripts/bootstrap-json/index.js#L330. No entanto, essa não é uma ótima solução. Alguém já passou por problemas semelhantes ao se conectar a um site Discourse rodando em localhost? Alguém tem sugestões sobre como configurar um servidor Apache local para aceitar respostas que tenham o cabeçalho content-encoding: null?
Gostaria de saber exatamente quando o problema começou. Possivelmente, ele tem ocorrido desde que o Discourse começou a definir o cabeçalho content-encoding: null.
Editar: o problema está ocorrendo no Ubuntu 22.04.1. Versão do Curl: curl 7.81.0. Versão do PHP: 8.1.2. Isso não é nada urgente, mas estou curioso sobre o que está acontecendo.
Interessante! Isso me soa vagamente familiar, mas não consigo identificar o motivo no momento. Mas acho que minha primeira pergunta é: onde e por que o Discourse está definindo o cabeçalho content-encoding como null?
Isso realmente parece ser um problema “apenas de desenvolvimento”. Parece relacionado a
Os números das linhas mudam à medida que o código é atualizado. Para referência futura, a linha no código do Discourse que tenho que comentar para desenvolvimento local com o plugin WP Discourse é:
res.set("content-encoding", null);
Sem ter rastreado completamente o que está acontecendo no código do Discourse, parece que comentar essa linha está fazendo com que o Discourse gzip a resposta:
Tenho que voltar a este tópico toda vez que quero conectar meus sites locais do WordPress e Discourse.
Para minha própria referência, a linha res.set("content-encoding", null); agora está em:
Comentar a linha resolve o problema.
Se o problema não estiver afetando outras pessoas, possivelmente algo está mal configurado no meu ambiente de desenvolvimento local. No entanto, definir “content-encoding” para null ainda parece errado. Não é um valor válido para o cabeçalho.
Na verdade, também encontrei isso recentemente no contexto do plugin ActivityPub ao testar a integração do ActivityPub entre o plugin ActivityPub do WordPress e o Discourse localmente.
Mudei a categoria para Dev aqui porque acho que é apenas um problema de desenvolvimento com discourse/discourse e só se manifesta com um remoto PHP (por causa de como as funções de solicitação PHP lidam com as coisas ou algo assim).
Não me lembro exatamente agora, mas acho que cheguei à conclusão de que isso é definido em outro lugar na produção? Tentarei me lembrar amanhã.