Ошибка загрузки изображений в Firefox на macOS

Я пытался загрузить изображения через Firefox на macOS как через скриншот/вставку, так и через загрузку файла, и в обоих случаях отображается, что изображение загружается:

Но затем появляется сообщение о том, что загрузка изображения не удалась:

(Я опубликовал это сообщение через Chrome, и там всё работает; также это работает в DiscourseHub на iOS).

Есть ли какие-то идеи, что может происходить с Firefox на macOS?

Какая у вас точная версия Firefox? cc @martin

Есть ли ошибки в консоли?

(повторить не удалось на Firefox Windows 95.0.2)

Firefox 95.0.2 (64-разрядная)… (на MacOS 10.14.6)

[Uppy] [20:14:42] Не удалось загрузить Screen Shot 2021-12-21 at 3.14.08 PM.png AwsS3/Multipart: Не удалось прочитать заголовок ETag. Скорее всего, это означает, что CORS настроен неправильно в бакете S3. См. инструкции по адресу https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration. _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
    (Async: promise callback)
    z _vendor-0d13dafa62355d23ad44f16cc044a987.js:6770
    z _vendor-0d13dafa62355d23ad44f16cc044a987.js:6769
    (Async: promise callback)
    z _vendor-0d13dafa62355d23ad44f16cc044a987.js:6769
    F _vendor-0d13dafa62355d23ad44f16cc044a987.js:6757
    (Async: promise callback)
    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
    (Async: promise callback)
    r _vendor-0d13dafa62355d23ad44f16cc044a987.js:6802
    s _vendor-0d13dafa62355d23ad44f16cc044a987.js:6804
    (Async: promise callback)
    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
    (Async: promise callback)
    value _vendor-0d13dafa62355d23ad44f16cc044a987.js:6926
    scheduledAutoProceed _vendor-0d13dafa62355d23ad44f16cc044a987.js:6948
    (Async: setTimeout handler)
    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

Просто уточняю: это происходит на Meta или на вашем собственном сайте?

На мета я пока не проверял свой.

Понятно, возможно, у нас есть какое-то отсутствующее правило CORS, которое каким-то образом срабатывает только в Firefox у вас?

Вы пробовали также другие изображения?

У меня на собственной инстансе Discourse работает.

Да, только что попробовал с различными изображениями из моего рабочего стола и других папок на компьютере, и ответ тот же.

Мы проводим расследование. Подтвердите, пожалуйста: речь идёт о функции «копировать-вставить», «перетаскивание», кнопке загрузки или обо всём сразу?

Я попробовал все три варианта на своей машине с Windows, но, возможно, потребуется повторить тесты со стандартной учётной записью на случай, если я обошёл какие-то ограничения.

просто уточняю: это «копировать-вставить», «перетащить» или кнопка загрузки, или все три?

Похоже, что все три варианта.

Кроме того, на случай, если у нас есть компонент темы, который вызывает проблемы, не могли бы вы попробовать в безопасном режиме?

Только что проверил все три метода в безопасном режиме, но получаю ту же ошибку.

Хм. Только что проверил все три в режиме инкогнито, и они работают. Возможно, дело в моих файлах cookie или кэше в Firefox, а не на вашей стороне.

(следующее изображение было отправлено из режима инкогнито Firefox):

AwsS3/Multipart: Не удалось прочитать заголовок ETag. Скорее всего, в хранилище S3 неверно настроена CORS. Инструкции см. по адресу https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration.

Возможно, это было просто временное неполадка на стороне S3? ETag должен возвращаться в ответе при загрузке части файла в AWS, но для этого необходимо явно включить соответствующий параметр CORS в настройках хранилища:

У меня на Linux в версии 95.0.2 это работало без проблем.

ETag должен возвращаться в ответе при загрузке части файла в AWS, но это должно быть явно включено нами через настройку CORS для бакета:

Хм, у меня тоже это отображается (скриншот из Firefox, но сейчас загружаю через Chrome):

Только что проверил все три варианта в режиме инкогнито, и они работали. Возможно, проблема в моих файлах cookie или кэше в Firefox, а не на вашей стороне.

Я удалил файлы cookie для discourse.org и почти отключил Enhanced Tracking Protection в Firefox, но проблема всё ещё сохраняется. Однако в режиме инкогнито в Firefox всё работает.

Я продолжу экспериментировать на своей стороне, чтобы понять, не является ли причиной какое-либо расширение Firefox или что-то ещё.

Я нашел виновника. У меня установлен плагин ClearURLs для Firefox, и в нем есть опция

Фильтровать заголовки ETag из запросов (см. также эту статью)

Я отключил эту настройку, и теперь всё работает. Загружаю фото ниже из обычного окна Firefox (не в режиме инкогнито).

Спасибо за помощь в отладке этой проблемы!

Отличное замечание, спасибо @jimkleiber… сообщим команде об этом, на случай если это повторится!

Ах, не за что, @sam! Рад, что смог помочь. Кроме того, это помогло мне увидеть, насколько просто в Discourse изменить разговор с «баг» на «поддержка», а затем переключить его на решаемую тему после этого :pray: