Erro de upload de imagem no Firefox do MacOS

Tentei carregar imagens pelo Firefox no MacOS, tanto por captura de tela/colar quanto por upload de imagem, e ambos me mostram que a imagem está sendo carregada:

Mas depois me mostram que a imagem falhou:

(Postei isso pelo Chrome e está funcionando, também funciona no DiscourseHub no iOS).

Alguma ideia do que pode estar acontecendo no FF no MacOS?

Qual versão exata do Firefox você está usando? cc @martin

Algum erro no seu console?

(sem reprodução no Firefox Windows 95.0.2)

Firefox 95.0.2 (64-bit)…(no MacOS 10.14.6)

[Uppy] [20:14:42] Falha ao carregar Screen Shot 2021-12-21 at 3.14.08 PM.png AwsS3/Multipart: Não foi possível ler o cabeçalho ETag. Isso provavelmente significa que o CORS não está configurado corretamente no Bucket S3. Veja https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration para instruções. _vendor-0d13dafa62355d23ad44f16cc044a987.js:6349:24
    error _vendor-0d13dafa62355d23ad44f16cc044a987.js:6349
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6917
    de _vendor-0d13dafa62355d23ad44f16cc044a987.js:6940
    me _vendor-0d13dafa62355d23ad44f16cc044a987.js:6951
    emit _vendor-0d13dafa62355d23ad44f16cc044a987.js:6311
    emit _vendor-0d13dafa62355d23ad44f16cc044a987.js:6311
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6854
    onError _vendor-0d13dafa62355d23ad44f16cc044a987.js:6710
    Z _vendor-0d13dafa62355d23ad44f16cc044a987.js:6799
    z _vendor-0d13dafa62355d23ad44f16cc044a987.js:6770
    (Assíncrono: callback de promessa)
    z _vendor-0d13dafa62355d23ad44f16cc044a987.js:6770
    z _vendor-0d13dafa62355d23ad44f16cc044a987.js:6769
    (Assíncrono: callback de promessa)
    z _vendor-0d13dafa62355d23ad44f16cc044a987.js:6769
    F _vendor-0d13dafa62355d23ad44f16cc044a987.js:6757
    (Assíncrono: callback de promessa)
    F _vendor-0d13dafa62355d23ad44f16cc044a987.js:6755
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6749
    a _vendor-0d13dafa62355d23ad44f16cc044a987.js:6716
    m _vendor-0d13dafa62355d23ad44f16cc044a987.js:6138
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6132
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6716
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6709
    n _vendor-0d13dafa62355d23ad44f16cc044a987.js:6725
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6724
    e _vendor-0d13dafa62355d23ad44f16cc044a987.js:6963
    m _vendor-0d13dafa62355d23ad44f16cc044a987.js:83
    _invoke _vendor-0d13dafa62355d23ad44f16cc044a987.js:80
    t _vendor-0d13dafa62355d23ad44f16cc044a987.js:83
    r _vendor-0d13dafa62355d23ad44f16cc044a987.js:6802
    s _vendor-0d13dafa62355d23ad44f16cc044a987.js:6804
    (Assíncrono: callback de promessa)
    r _vendor-0d13dafa62355d23ad44f16cc044a987.js:6802
    s _vendor-0d13dafa62355d23ad44f16cc044a987.js:6804
    (Assíncrono: callback de promessa)
    r _vendor-0d13dafa62355d23ad44f16cc044a987.js:6802
    s _vendor-0d13dafa62355d23ad44f16cc044a987.js:6804
    i _vendor-0d13dafa62355d23ad44f16cc044a987.js:6804
    i _vendor-0d13dafa62355d23ad44f16cc044a987.js:6803
    be _vendor-0d13dafa62355d23ad44f16cc044a987.js:6958
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6930
    (Assíncrono: callback de promessa)
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6926
    scheduledAutoProceed _vendor-0d13dafa62355d23ad44f16cc044a987.js:6948
    (Assíncrono: manipulador setTimeout)
    he _vendor-0d13dafa62355d23ad44f16cc044a987.js:6948
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6870
    _addFiles _application-1b8d860fd0cc6e174f8a7abbca67d655.js:5023
    _run _vendor-0d13dafa62355d23ad44f16cc044a987.js:4034
    _join _vendor-0d13dafa62355d23ad44f16cc044a987.js:4033
    join _vendor-0d13dafa62355d23ad44f16cc044a987.js:3999
    f _vendor-0d13dafa62355d23ad44f16cc044a987.js:2870
    bind _vendor-0d13dafa62355d23ad44f16cc044a987.js:2873
    n _application-1b8d860fd0cc6e174f8a7abbca67d655.js:4565
    n _application-1b8d860fd0cc6e174f8a7abbca67d655.js:4565

Apenas confirmando, isso está acontecendo no meta ou no seu próprio site?

No meta, eu ainda não verifiquei o meu.

Entendi, talvez tenhamos alguma regra CORS faltando que esteja sendo acionada apenas no Firefox para você?

Você tentou com imagens diferentes também?

Funciona na minha própria instância do Discourse.

Sim, acabei de tentar agora com várias imagens da minha área de trabalho e de outras pastas no meu computador e a mesma resposta.

Estamos investigando, apenas confirmando se é “recortar-colar”, “arrastar e soltar”, botão de upload ou todos os 3?

Tentei as 3 permutações na minha máquina Windows, mas podemos precisar tentar novamente com uma conta padrão caso eu contorne as coisas.

apenas confirmando, isso é “copiar e colar”, “arrastar e soltar”, botão de upload ou todos os 3?

Parece ser todos os três.

E, caso haja algum componente de tema causando problemas, você pode tentar no modo de segurança?

Tentei todos os três métodos no modo de segurança e ainda estou recebendo o mesmo erro.

Hmm. Acabei de tentar todos os três em uma janela anônima e eles funcionaram. Talvez seja algo com meus cookies/cache no FF e não algo do seu lado.

(a seguinte imagem foi postada do FF anônimo):

\u003e AwsS3/Multipart: Não foi possível ler o cabeçalho ETag. Isso provavelmente significa que o CORS não está configurado corretamente no Bucket S3. Veja https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration para instruções.

Talvez isso pudesse ter sido apenas uma falha temporária do S3? O ETag deve ser retornado na resposta do upload de uma parte para o AWS, mas isso deve ser explicitamente habilitado por nós com uma configuração CORS no bucket:

Funcionou na versão 95.0.2 para mim no Linux.

O ETag deve ser retornado na resposta do upload de uma parte do upload para a AWS, mas isso deve ser explicitamente habilitado por nós com uma configuração CORS no bucket:

Hmm, parece que o meu também mostra isso (captura de tela do FF, mas estou fazendo o upload pelo Chrome agora):

Acabei de tentar todos os três em uma janela anônima e eles funcionaram. Talvez seja algo com meus cookies/cache no FF e não algo do seu lado.

Excluí os cookies do discourse.org e configurei minha Proteção Aprimorada Contra Rastreamento do FF basicamente para desativada, e ainda assim está acontecendo. Mas ainda funciona no modo anônimo no FF.

Continuarei experimentando do meu lado para ver se alguma extensão do FF ou algo assim está causando o problema.

Encontrei o culpado. Tenho o complemento ClearURLs FF instalado e ele tem uma opção de

Filtra cabeçalhos ETag de requisições (Veja também este artigo)

Desativei essa configuração e agora funciona, enviando a foto abaixo de uma janela FF não anônima.

Obrigado por me ajudar a depurar isso!

Ótima pegada, obrigado @jimkleiber … avisarei a equipe caso isso aconteça novamente!

Ah, de nada, @sam! Fico feliz em ter ajudado. Além disso, isso me ajudou a ver como é fácil no Discourse mudar uma conversa de um “bug” para “suporte” e, em seguida, mudar para um tipo de tópico solucionável depois do fato :pray: