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 설정(예: Proxy, CSS minify 등 제가 사용했던仅有的 두 가지 설정)과 관계없이 Discourse가 작동해야 하지 않나요?

맨InTheMiddle이 응답을 예측할 수 없는 방식으로 변경할 수 있다면 정확성을 보장하는 것은 불가능합니다 :wink:

맞아요! 하지만 포럼에서는 속도를 높이고 대역폭 소비를 줄이기 위해 Discourse가 거의 필수적인데요… 우회할 수 있는 방법을 찾아볼게요…

어색한 점은 그 외 모든 기능이 완벽하게 잘 동작한다는 거예요! 4년 넘게 3개 포럼에서 Discourse를 사용해 왔는데, 그 기능 하나를 제외하면 모두 문제없이 잘 작동하거든요. 뭔가 이상한 게 있나 봐요…

Cloudflare 지원팀에 연락해서 무엇이 아직 활성화되어 있는지 파악하는 데 도움을 요청하는 건 어떨까요? 아니면 포럼에 회색 클라우드를 적용하는 방법도 있습니다.

포럼을 CDN으로 사용하도록 두 번째 오렌지 클라우드 도메인을 구성할 수 있으며, Meta에는 이를 설정하는 방법에 대한 가이드가 몇 가지 있습니다.

그렇지 않습니다. Cloudflare는 Discourse의 많은 측면을 느리게 만듭니다. 추가 기능이 활성화되어 있다면 그 정도가 더 심해집니다. Discourse는 웹사이트가 아닌 애플리케이션이므로, 브라우저의 클라이언트 앱에서 Cloudflare를 거쳐 백엔드 서버로 요청을 라우팅하면 지연 시간이 현저히 증가합니다.

Cloudflare는 Discourse가 이미 수행하는 것보다 JavaScript 페이로드를 더 잘 최적화할 수 없으며, 이러한 최적화가 활성화되면 정확히 지금 겪고 계신 문제가 발생합니다.

최소한 Cloudflare에서 Discourse 도메인에 대해 '성능 비활성화(Disable Performance)'를 설정하는 새로운 페이지 규칙이 필요합니다. 해당 기능이 활성화된 상태에서는 설치를 지원하는 데 아무것도 할 수 없습니다. 규칙은 다음과 같이 설정해야 합니다:

하지만 당분간 문제를 해결하려면 오렌지 클라우드(Orange Cloud)를 꺼야 합니다.

uploads 폴더의 모든 것을 캐시하는 캐싱 규칙을 설정할 수는 있지만, 솔직히 말하면 실제 CDN을 사용하는 것이 훨씬 낫습니다.