На мой взгляд, это похоже на баг, но тогда я бы увидел тему об этом здесь. Значит, если мой форум — единственный, где это происходит, то проблема, скорее всего, на моей стороне.
Впрочем.
Пользователи на Android не видят виртуальную клавиатуру при использовании редактора форматированного текста. Если переключиться на Markdown, всё работает нормально. iPad и iPhone (Safari/PWA, DiscourseHub) застряли в режиме Markdown и не могут переключиться на RTE.
Как мне кажется, это началось два дня назад. Мои пользователи имеют привычку ждать, прежде чем сообщить, что что-то сломалось.
Что ещё… сам хостинг, 2 контейнера, последняя версия, обновляется каждый день, а на момент написания этой записи самая свежая версия вышла 20 минут назад, режим безопасного запуска не помогает.
Какой мой следующий шаг? Консоль и возможные ошибки — это не вариант на мобильных устройствах.
(index):1 Access to script at 'https://cdnfoorumi.katiska.eu/assets/br/chunk-coedl1gv.digested.js' from origin 'https://foorumi.katiska.eu' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
prosemirror-editor-opfbo6zd.digested.js:1 GET https://cdnfoorumi.katiska.eu/assets/br/chunk-coedl1gv.digested.js net::ERR_FAILED 200 (OK)
d-editor.gjs:212 Uncaught (in promise) TypeError: Failed to fetch dynamically imported module: https://cdnfoorumi.katiska.eu/assets/br/prosemirror-editor-opfbo6zd.digested.js
Prosemirror — это RTEditor. Но я не могу помочь дальше, чем поделиться сообщением об ошибке, которое я вижу.
Не по теме: Спасибо за смех над вашей категорией «Целую и животные» (К сожалению, в английском переводе написано «cats» [кошки] вместо этого, поэтому я останусь при немецком варианте )
Я не понимаю, что здесь происходит, но проблема в S3 и моих настройках там? Если да, то почему это началось только недавно? Одним из симптомов может быть то, что с вчерашнего дня я не могу больше писать заметки на досках.
Но если проблема в CORS, почему затронуты только эти элементы?
—
Почему во имя старых и новых богов ИИ использовал Küsse в этом контексте
Я не думаю, что в Discourse недавно были какие-либо изменения, которые могли бы вызвать эту проблему. Однако у S3 давно существует странная особенность с CORS, из-за которой CDN могут кэшировать версию ресурса без заголовка Access-Control-Allow-Origin. А если дело в некорректном кэшировании, это может объяснить, почему проблема затрагивает только некоторых пользователей (вероятно, в зависимости от их местоположения).
По-моему, S3 отправляет заголовок Access-Control-Allow-Origin только в ответ на запросы, содержащие заголовок Origin (то есть запросы от обычного веб-браузера). Когда заголовок Access-Control-Allow-Origin отсутствует, S3 не включает в ответ заголовок Vary: origin. И вот что происходит: если первый запрос к определённому ресурсу исходит не из браузера (например, от curl или какого-либо веб-сканера), CDN может закэшировать версию без заголовка CORS. Очень раздражающе!
Настройка DISCOURSE_CORS здесь вообще не поможет. Она актуальна только для сервера приложения, но не для S3.
В нашем хостинге мы обходим эту проблему, настраивая Cloudfront так, чтобы он добавлял Access-Control-Allow-Origin: * ко всем ответам. Это гарантирует, что странное поведение S3 не приведёт к кэшированию некорректного результата.
В качестве альтернативы можно настроить Cloudfront так, чтобы он включал заголовок запроса Origin в ключ кэша. Тогда ответы без CORS будут храниться отдельно от ответов с CORS.
У Amazon есть много документации по CORS здесь. У меня в заметках была эта ссылка, которая, как оказалось, вела на форумную тему именно об этой проблеме… но похоже, её удалили
Да, именно так — это требуется для кастомного домена, и это также позволяет сэкономить (если я правильно помню, трафик из Cloudfront дешевле, чем прямой трафик из S3).