Страница отписки не имеет кнопки отправки из-за Cloudflare

Наши пользователи начали жаловаться, что страница отписки (от сводных писем) не содержит кнопки отправки и не работает. После проверки страницы я увидел следующее:

Кнопка отправки на странице отсутствует.

В консоли зафиксированы следующие ошибки:

Запрос FetchEvent для "https://www.google-analytics.com/r/collect?v=1&_v=j81&a=1687584696&t=pageview&_s=1&dl=https%3A%2F%2Fmydomain.com%2F&dp=%2F&ul=en-us&de=UTF-8&dt=MyDomain&sd=24-bit&sr=1680x1050&vp=1680x939&je=0&_u=CACAAAAB~&jid=1509883826&gjid=448482383&cid=264324569.1586166300&uid=15&tid=UA-55573518-16&_gid=1087251009.1587052456&_r=1&z=1378394722" завершился ошибкой сети: обещание было отклонено.
NetworkFirst.mjs:167 Uncaught (in promise) no-response: no-response :: [{"url":"https://www.google-analytics.com/r/collect?v=1&_v=j81&a=1687584696&t=pageview&_s=1&dl=https%3A%2F%2Fmydomain.com%2F&dp=%2F&ul=en-us&de=UTF-8&dt=MyDomain&sd=24-bit&sr=1680x1050&vp=1680x939&je=0&_u=CACAAAAB~&jid=1509883826&gjid=448482383&cid=264324569.1586166300&uid=15&tid=UA-55573518-16&_gid=1087251009.1587052456&_r=1&z=1378394722"}]
    at a.makeRequest (https://mydomain.com/javascripts/workbox/workbox-strategies.prod.js:1:2145)
51d5760db57884c972254b1171ee83015edf29bb5a6588fa15afd90bf19cd856:1 С cookie, связанной с ресурсом стороннего сайта по адресу http://clickfunnels.com/, была установлена без атрибута `SameSite`. В будущих версиях Chrome куки будут передаваться с запросами сторонних сайтов только в том случае, если они установлены с `SameSite=None` и `Secure`. Вы можете просмотреть куки в инструментах разработчика в разделе Application>Storage>Cookies и узнать больше по ссылкам https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.
1aeeb5a3adae2c127f9e6aafa5d5e1e46c257be5.js?__ws=mydomain.com:5 Загрузка скрипта 'https://connect.facebook.net/en_US/fbevents.js' была заблокирована, так как она нарушает следующую директиву политики безопасности контента (CSP): "script-src 'report-sample' https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/ https://www.google-analytics.com/analytics.js". Обратите внимание, что 'script-src-elem' явно не задан, поэтому в качестве запасного варианта используется 'script-src'.

(anonymous) @ 1aeeb5a3adae2c127f9e6aafa5d5e1e46c257be5.js?__ws=mydomain.com:5
51d5760db57884c972254b1171ee83015edf29bb5a6588fa15afd90bf19cd856:1 Загрузка скрипта 'https://mydomain.com/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js' была заблокирована, так как она нарушает следующую директиву политики безопасности контента (CSP): "script-src 'report-sample' https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/ https://www.google-analytics.com/analytics.js". Обратите внимание, что 'script-src-elem' явно не задан, поэтому в качестве запасного варианта используется 'script-src'.

Любая помощь будет очень кстати!

На реальном сайте клиента при выборе «Отписаться» от еженедельной рассылки/сводки ошибок не обнаружено, однако цветовая схема некорректна:

Это [email protected] означает, что форум обслуживается через Cloudflare. Убедитесь, что вы отключили все специальные функции производительности Cloudflare.

Я отключил все доступные функции Cloudflare, но проблема осталась. Кроме того, разве Discourse не должен работать независимо от своих настроек (например, прокси и минификации CSS, которые были единственными используемыми мной настройками)?

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

Верно! Но Discourse — это своего рода необходимость для форума, чтобы ускорить его работу и снизить потребление полосы пропускания… Я посмотрю, что можно найти, чтобы обойти это…

Странно то, что всё остальное работает абсолютно нормально! Я уже более 4 лет использую Discourse на трёх форумах, и всё работает отлично, кроме этой функции. Так что, наверное, что-то не так…

Возможно, стоит обратиться в службу поддержки Cloudflare, чтобы выяснить, что всё ещё включено? Или просто перевести форум в режим «серого облака».

Вы можете настроить второй домен с оранжевым облаком в качестве CDN для форума. На Meta есть несколько руководств о том, как это сделать.

Это не так. Cloudflare замедляет многие аспекты работы Discourse, особенно если включены дополнительные функции. Discourse — это приложение, а не веб-сайт; маршрутизация запросов от клиентского приложения в вашем браузере через Cloudflare к серверу бэкенда значительно увеличивает задержку.

Cloudflare не может оптимизировать JavaScript-нагрузку лучше, чем это уже делает Discourse, и при включении таких оптимизаций возникают именно те проблемы, с которыми вы сталкиваетесь.

Как минимум, вам необходимо создать новое правило страницы для отключения «Производительности» (Disable Performance) для вашего домена Discourse в Cloudflare. Мы не сможем оказывать поддержку вашей установке, пока эти функции включены. Правило должно выглядеть примерно так:

Но пока для устранения проблем оранжевое облако должно быть выключено.

Вы можете настроить правило кэширования, которое будет кэшировать всё в папке uploads, но честно говоря, вам будет гораздо лучше использовать настоящий CDN.