忘记在通过自定义组件添加跟踪代码时编辑CSP

我尝试在 </head> 中添加以下内容:

<!-- Matomo - head -->
<script type="text/discourse-plugin" version="0.2">
    // 跟踪页面浏览
    api.onPageChange((url, title) => {
        if (_paq) {
            try {
                var currentUser = PreloadStore.get('currentUser');
                _paq.push(['setCustomVariable', 3, 'Forum status', !currentUser ? 'Anonymous' : 'LoggedIn user', 'visit']);
            } catch(e) {} 
              
            _paq.push(["setCustomUrl", url]);
            _paq.push(["setDocumentTitle", title]);
            _paq.push(["trackPageView"]);
        }
    });
</script>
<!-- /Matomo - head -->

然后在 </body> 中添加:

<!-- Matomo -->
<script type="text/javascript">
  var _paq = window._paq = window._paq || [];
  /* 跟踪器方法(如 "setCustomDimension")应在 "trackPageView" 之前调用 */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://stats.xxxxxxx.xxx/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '8']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->

但我得到的只是页面的 HTML 源代码中的 HTML 注释。<script> 标签似乎已被移除。
是否有需要启用的安全设置以允许在这些区域使用脚本?

<!-- Matomo - head -->

<!-- /Matomo - head -->
[...]
<!-- Matomo -->

<!-- End Matomo Code -->

感谢您的帮助。

1 个赞

您应使用此 在 Discourse 上启用 Matomo 分析脚本

1 个赞

谢谢你,这应该能解决我目前的问题……

但是,难道不应该可以在这些部分注入自定义的 JavaScript 吗?

我已经安装了该组件并为“Default”主题启用了它,但似乎并没有什么改善 :-/

1 个赞

您检查过浏览器日志吗?是否已将您的 Matomo 脚本主机添加到 CSP 设置列表中?

1 个赞

你说得对……我之前并不知道有 CSP 设置……

浏览器日志总是会对此发出警告,因此请务必检查这些日志。

1 个赞

@Falco,我想我遇到了和 Matomo 无法与 Discourse 协同工作的相同问题。这是 Matomo 支持团队在 我于他们的 GitHub 提交工单 后告诉我的:

Matomo 支持: “我检查了您的网站,配置的 CSP 阻止了加载我们的追踪器。您应该查看 https://matomo.org/faq/general/faq_20904/,并检查如何在您的服务器环境中进行配置。”

我查看了 Discourse 的日志(URL/logs),但没找到任何相关内容。

我的 Discourse 位于:https://hec.fm
我的 Matomo 实例位于:https://stats.hec.fm

我以为我已经在设置中更改了 CSP 以使其生效,但仍然无法工作:

我以为我已经仔细遵循了教程 在 Discourse 上启用 Matomo 分析脚本,但似乎还不够。

我哪里做错了?:slightly_smiling_face:

我看到 Matomo 脚本在 hec.fm 上已正确加载,因此您不存在 CSP 问题。也许是 Matomo 端的其他问题?

另外,您上方截图中 https://stats.hec.fm/Matomo 下方的那些行是多余的。

3 个赞