Cloudflareの影響により、購読解除ページに送信ボタンが表示されない

ユーザーから、サマリーメールの「購読解除ページ」に送信ボタンがなく、機能しないという苦情が届きました。ページを確認したところ、以下のような状態でした:

ページ上に送信ボタンが一切表示されていません。

コンソールには以下のエラーが表示されています:

The FetchEvent for "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" resulted in a network error response: the promise was rejected.
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 A cookie associated with a cross-site resource at http://clickfunnels.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
1aeeb5a3adae2c127f9e6aafa5d5e1e46c257be5.js?__ws=mydomain.com:5 Refused to load the script 'https://connect.facebook.net/en_US/fbevents.js' because it violates the following Content Security Policy directive: "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". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.

(anonymous) @ 1aeeb5a3adae2c127f9e6aafa5d5e1e46c257be5.js?__ws=mydomain.com:5
51d5760db57884c972254b1171ee83015edf29bb5a6588fa15afd90bf19cd856:1 Refused to load the script 'https://mydomain.com/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js' because it violates the following Content Security Policy directive: "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". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.

ご助力いただければ幸いです!

ライブの顧客サイトでは、週次ダイジェスト/サマリーメールの購読解除を選択しても再現しませんでした。ただし、カラーテーマが異なります:

[email protected]」は、フォーラムが Cloudflare を介して提供されていることを示しています。Cloudflare のすべての特殊なパフォーマンス機能を無効にしてください。

Cloudflareで可能なすべての機能を無効にしましたが、状況は変わりません。また、Discourseは設定(私が使用したのはプロキシとCSSの最小化の2つだけですが)に関係なく動作するはずです!

中間者によって予測不可能な方法で応答が変更されてしまう場合、正しさを保証することは不可能です :wink:

その通り!でも、フォーラムを高速化し、帯域幅の消費を抑えるためには、Discourse はほぼ必須ですよね……それに対する代替案を探してみます……

奇妙なことに、それ以外の機能はすべて完璧に動作しているんです!Discourse を 3 つのフォーラムで 4 年以上使ってきましたが、その機能以外はすべて正常に動いています。何かおかしいのかもしれませんね……

Cloudflareのサポートに連絡して、まだ有効になっているものを特定してもらうのはどうでしょうか?あるいは、フォーラムのクラウドアイコンをグレーに設定する手もあります。

フォーラムのCDNとして、2番目のオレンジクラウドドメインを設定することも可能です。その方法については、Metaにいくつかのガイドがあります。

それは正しくありません。Cloudflare は Discourse の多くの側面を遅くします。特に追加機能が有効になっている場合、その影響はさらに大きくなります。Discourse は単なるウェブサイトではなくアプリケーションであり、ブラウザ内のクライアントアプリから Cloudflare を経由してバックエンドサーバーへリクエストをルーティングすると、レイテンシが大幅に増加します。

Cloudflare は、Discourse が既に実施している以上の JavaScript ペイロードの最適化を行うことはできません。また、そのような最適化を有効にすると、まさにあなたが経験しているような問題が発生します。

最低でも、Cloudflare 上で Discourse ドメインに対して「パフォーマンスを無効化」する新しいページルールを設定する必要があります。これらの機能が有効な状態では、インストールのサポートを行うことはできません。ルールは以下のようなものにする必要があります。

ただし、現時点では問題のトラブルシューティングを行うために、オレンジ色のクラウド(プロキシ機能)をオフにする必要があります。

uploads 内のすべてのコンテンツをキャッシュするキャッシュルールを設定することは可能ですが、正直なところ、本格的な CDN を使用した方がはるかに良い結果が得られるでしょう。