У одного из наших клиентов возникли проблемы с загрузкой защищённых медиафайлов.
Этот клиент использует Discourse на базе Docker (официальная установка) с включённой поддержкой AWS S3 и защищённых медиафайлов.
На форуме размещено несколько аудиофайлов форматов mp3 и m4a.
Discourse автоматически встраивает удобный плеер, например, как здесь:
![]()
Проблема: аудиофайлы работают ненадёжно. Иногда они не воспроизводятся.
Мне не удаётся воспроизвести проблему со 100% гарантией, возможно, из-за кэширования, но кажется, что загрузка файла откладывается до момента нажатия кнопки воспроизведения. Это звучит логично и правильно.
Однако это создаёт проблемы при использовании защищённых медиафайлов: если оставить страницу открытой на некоторое время и нажать кнопку воспроизведения через минуту или около того, аудиофайл не всегда воспроизводится. В этот момент AWS возвращает ошибку 403 Expired. Похоже, что запрос подписывается не в момент запроса файла, а раньше. Сообщение об ошибке явно указывает, что запрос истёк в прошлом.
Я подозреваю, что это связано с задержкой, но не уверен на 100%. Факт в том, что проблема возникает только с аудиофайлами (в отличие от встроенных изображений, которые всегда загружаются сразу).
Да, время на сервере установлено правильно.
Я могу воспроизвести проблему на чистой установке с последней бета-версией. Достаточно добавить два аудиофайла в тему и немного поиграть с ними.
