取消订阅页面由于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 未捕获(在 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 与 http://clickfunnels.com/ 处的跨站资源关联的 cookie 在设置时未包含 `SameSite` 属性。未来版本的 Chrome 将仅传递设置了 `SameSite=None` 和 `Secure` 的跨站请求 cookie。您可以在开发者工具的“应用程序 > 存储 > Cookie”中查看 cookie,并在以下网址了解更多详情: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',因为它违反了以下内容安全策略指令:"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',因为它违反了以下内容安全策略指令:"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 对于论坛来说几乎是必不可少的,它能加快运行速度并降低带宽消耗……我会看看有没有什么办法可以绕过它……

奇怪的是,其他所有功能都完全正常!我在三个论坛上使用 Discourse 已经超过 4 年了,除了这个功能外一切运行良好,所以我觉得肯定有什么地方不太对劲……

也许可以联系 Cloudflare 支持团队,协助排查哪些功能仍处于启用状态?或者直接将论坛的域名改为灰色云朵状态。

您可以将第二个橙色云朵域名配置为论坛的 CDN,Meta 上有一些相关指南介绍如何操作。

这不正确。Cloudflare 会拖慢 Discourse 的许多方面,如果启用了额外功能,情况会更严重。Discourse 是一个应用程序,而不是网站;将客户端浏览器中的请求通过 Cloudflare 路由到后端服务器会显著增加延迟。

Cloudflare 无法比 Discourse 本身更好地优化 JavaScript 负载,而一旦启用此类优化,恰恰会导致您正在经历的问题。

至少,您需要在 Cloudflare 上为您的 Discourse 域名添加一条新的页面规则以“禁用性能优化”。在您启用这些功能期间,我们无法为您的安装提供任何支持。该规则应类似于以下内容:

但目前,为了排查问题,应将橙色云朵图标关闭。

可以配置一条缓存规则,缓存 uploads 目录下的所有内容,但说实话,使用真正的 CDN 会好得多