Загрузка с предварительной обработкой JS на стороне клиента не работает в браузерах на базе Chrome

При попытке прикрепить изображение «большого» размера (кажется, всё, что больше 1 МБ, хотя точную границу пока не определил) к сообщению на форуме Discourse в мобильных браузерах на базе Chrome (Chrome, Cromite, Brave) загрузка не удаётся. В Firefox всё работает.

Загрузка, по утверждению системы, инициируется, и статусное сообщение застревает на «Обработка загрузки», но сама загрузка никогда не начинается (нет прогресса), и процесс остаётся зависшим навсегда. В некоторых случаях загрузка вообще не инициируется, и интерфейс возвращается к режиму редактирования, как будто попытка загрузки никогда не предпринималась.

ОС: Pixel 9 Pro с GrapheneOS (Android 15). Используется Adaway (блокировка рекламы на уровне хоста) в режиме VPN, но, похоже, это не влияет на ситуацию (Firefox работает независимо от того, активен он или нет, а браузеры на базе Chrome не работают в любом случае). Проблема возникает на любом подключении, которое мне удалось протестировать (все сети Wi‑Fi и два разных мобильных оператора).

Мне удалось сузить круг причин до того, что в клиенте не загружается JavaScript‑файл предварительной обработки медиа: media-optimization-worker.js:

Запрос fetch отменяется по неизвестной причине. Для небольших изображений, где media-optimization-worker не используется, поскольку они уже достаточно малы, всё работает как ожидалось. В мобильном Firefox всё работает в любых случаях (хотя интерфейс Discourse в мобильном Firefox всё ещё сильно сломан, так что…).

Я также зарегистрировал баг в репозитории своего браузера: Uploads in Discourse involving client-side JS preprocessing do not start/work · Issue #1679 · uazo/cromite · GitHub.

Попробовал на try.discourse.org — проблема проявляется и там. Буду признателен за любые подсказки.

Вы тоже внесли изменения в nginx?

Я сталкиваюсь с этой проблемой как клиент, сам я не администрирую ни один экземпляр Discourse. Однако, поскольку это происходит как в том экземпляре Discourse, которым я пользуюсь как пользователь (horlogeforum.nl, управляемый профессиональным партнером по хостингу Discourse), так и на try.discourse.org, я предполагаю, что настройки выполнены правильно.

Также это не происходит в Firefox, поэтому, если бы изменение вызывало эту проблему, я бы ожидал, что всё будет неработоспособным…

Судя по тому, что я вижу в журналах отладки, проблема, по-видимому, заключается в том, что сам файл JavaScript media-optimization-worker.js не загружается; интерфейс даже не пытается выполнить реальную загрузку.

В таком случае, я бы посоветовал связаться с администратором конкретного форума, так как бэкенд необходимо настроить для поддержки больших размеров файлов. Это поможет изолировать проблему (хотя я не утверждаю, что проблемы нет).

Опять же, это происходит и на try.discourse.org.

Само по себе изменение размера загружаемых файлов большого размера на стороне клиента не является проблемой, так как в Firefox это работает нормально. Скрипт, отвечающий за это, не загружается в браузерах на базе Chrome.

1 лайк

Ах, хорошо, извините, понял вас.

Самая распространённая причина столь быстрой отмены запроса — расширение браузера (например, блокировщик рекламы и т. п.). Не могли бы вы проверить, включено ли что-то подобное? Также попробуйте запустить тест в режиме инкогнито и посмотрите, повторяется ли проблема.

Кстати, у меня загрузка больших изображений через Chrome проходит без проблем. Файл media-optimization-worker.js загружается успешно.

3 лайка

Изначально я тоже так подумал. Мой основной браузер — Cromite, который действительно включает множество функций для блокировки рекламы и отслеживания, но проблема возникает и в стандартном, немодифицированном Google Play Chrome. На телефоне у меня установлен AdAway, но проблема сохраняется независимо от того, активен он или нет.

Ещё не пробовал — проверю и отпишусь.

Чтобы уточнить: вы используете Chrome на Android? И если да, то какая версия Android? На десктопной версии Chrome проблем тоже нет. Firefox тоже загружает его безупречно везде.

1 лайк

У меня всё работает: использую Chrome 132.0.6834.79 на Android 14 для загрузки одного или нескольких изображений по 4,3 МБ на try.discourse.org.

2 лайка