Não acho que tenham havido mudanças recentes no Discourse que causem isso. No entanto, o S3 tem uma peculiaridade de longa data com CORS, que pode fazer com que CDNs cacheiem uma versão do asset sem o cabeçalho Access-Control-Allow-Origin. E, se for um problema de cache ruim, isso poderia explicar por que afeta apenas alguns dos seus usuários (provavelmente com base na localização deles).
Se não me engano, o S3 só envia o cabeçalho Access-Control-Allow-Origin para solicitações que enviam um cabeçalho Origin (ou seja, aquelas vindas de um navegador web normal). Quando o Access-Control-Allow-Origin é omitido, ele não envia Vary: origin em sua resposta. E assim: se a primeira solicitação para um determinado asset for enviada de um contexto que não seja de navegador web (por exemplo, curl, ou algum crawler web), o CDN pode cacheiar a versão sem o cabeçalho CORS. Muito chato!
A configuração DISCOURSE_CORS não ajudará em nada aqui. Ela só é relevante para o servidor de aplicação, não para o S3.
Na nossa hospedagem, contornamos esse problema configurando o Cloudfront para adicionar Access-Control-Allow-Origin: * a todas as respostas. Isso garante que o comportamento estranho do S3 não possa causar o cacheamento de um resultado ruim.
Alternativamente, você pode configurar o Cloudfront para incluir o cabeçalho de solicitação Origin em sua chave de cache, o que manteria as respostas sem CORS separadas das respostas com CORS.
A Amazon tem uma série de documentações sobre CORS aqui. Eu tinha este link nas minhas anotações, que aparentemente era um tópico de fórum exatamente sobre essa questão… mas parece que eles o removeram ![]()