跳转到内容
搜索文档

常见问题

最后更新 查看 MarkdownAgent 设置

您可以在下面找到我们最常被问到的问题的答案。如果您找不到要找的答案,请参考 社区页面 探索更多资源。

错误

当我将信标添加到我的网站并加载网页时,我看到一个包含 is not allowed by Access-Control-Allow-Origin (CORS) 的错误。发生了什么?

当加载分析的站点的的主机名与仪表板中配置的分析站点的名称不匹配时,通常会出现此错误。请仔细检查它们是否相同。

Cloudflare 基于后缀匹配主机名。例如,如果您为 example.com 设置了分析,我们将允许来自 www.example.comblog.staging.example.comfooexample.com 的分析。但是,我们不会允许来自 example.com.br 的分析。

如果站点没有发送 RefererOrigin 标头,您也可能会看到此错误。需要 Referer 标头(请勿尝试使用 Referrer-policy 标头代替)。我们目前正在进行一项更改,届时仅需要 Origin 标头——我们认为浏览器中无法禁用该标头。

分析信标被广告拦截器(包括 adblockplus、Brave、DuckDuckGo 扩展程序等)拦截。这是为什么?

Cloudflare 已意识到分析信标被这些服务拦截。

虽然 Cloudflare Web Analytics 使用 JavaScript 信标,但 Cloudflare 的边缘分析无法被拦截,因为我们可以测量收到的每个请求。任何通过 Cloudflare 代理流量的客户均可使用边缘分析。目前,Pro、Business 和 Enterprise 套餐的用户可以使用由我们的边缘日志提供支持的高级 Web 分析。

为什么我没有看到单页应用程序 (SPA) 或多页应用程序 (MPA) 的所有指标?

单页应用中发生的每次路由更改都将在路由更改前,将路由的测量结果发送到信标端点。每当用户离开标签页或关闭浏览器窗口时,都会发送最后一次路由更改的测量结果。这会触发 visibilityState 变为隐藏状态。每当发生这种情况时,Beacon JS 会使用 Navigator.sendBeacon 方法 发送有效负载,即使关闭浏览器窗口也不应该被取消。但是,由于兼容性问题,旧版浏览器会回退使用 AJAX (XmlHttpRequest),这在浏览器窗口关闭时可能会被取消,因此发送到信标端点的最后有效负载可能会丢失。另外,由于各种网络条件,将有效负载发送到信标端点时可能会丢失数据。

对于同一个站点,为什么我会看到自动设置报告了更多数据?

除非您使用规则控制要测量的页面,否则使用 自动设置 会在区域下的所有页面(子域)上注入 JS 代码片段。

如果您使用了 手动设置,则只会报告渲染了 JS 代码片段的页面。

我的网站是通过 Cloudflare 代理的,但 Web Analytics 的自动设置不起作用。

如果您的 Cache-Control 标头设置为 public, no-transform,Cloudflare 代理将无法修改网站的原始有效负载。因此,Beacon 脚本不会自动注入您的站点,且 Web Analytics 将无法正常工作。有关更多信息,请参考 源站缓存控制

为什么我从 /cdn-cgi/rum 收到 405 Method Not Allowed 错误?

/cdn-cgi/rum 端点仅接受用于数据提取的 POST 请求。如果您使用任何其他 HTTP 方法(例如 GETPUTDELETE)发送请求,端点将返回 405 Method Not Allowed 响应,并附带 Allow: POST, OPTIONS 标头(支持 CORS 允许 OPTIONS)。

Web Analytics 信标(beacon.min.js)在报告指标时始终使用 POST。如果您在日志中看到 405 错误,则这些请求并非来自信标本身。

它们很可能来自进行错误请求的自动化测试工具,在这种情况下,您应更正其使用 POST 或忽略这些错误。

我们不支持直接与端点的自定义集成:所有请求都应来自我们的信标 JavaScript。

为什么我在 Internet Explorer 中看到信标脚本出现语法错误?

Internet Explorer 11 是 Internet Explorer 的最终版本,并已被 宣布完全停止生命周期 (EOL)(于 2022 年)

我们的信标脚本针对 Internet Explorer 不支持的现代语法。这将导致脚本尝试执行时出现用户不可见的错误。唯一的功能影响是不从这些旧版浏览器收集信标。

对于使用自动注入的客户,Cloudflare 在 <script> 标签中添加 type="module" 以防止在 Internet Explorer 和类似的已弃用旧浏览器中加载。

对于使用手动嵌入方法的客户,您需要手动在 <script> 标签中添加 type="module"。我们的仪表板已更新,以在安装说明中包含此属性。


设置

我正在通过 Cloudflare 代理我的网站。我应该手动添加 JS 信标吗?

您可以,但不是必须的。Cloudflare Web Analytics 主要是为那些不使用 Cloudflare 代理测量其网络流量的客户设计的。

现有的 Cloudflare 客户可以在仪表板的 Analytics(分析) 选项卡上访问从我们的边缘收集的分析数据。您还可以启用 Web Analytics 来使用 JavaScript 测量性能。

使用通过 Cloudflare 代理并且具有 自动设置 的域名,会将统计信息报告回您自己域的 /cdn-cgi/rum 端点。如果您自己安装了 JS 代码片段(手动设置),它将报告回 cloudflareinsights.com/cdn-cgi/rum 端点。

我可以使用像 Google 跟踪代码管理器 (GTM) 这样的标签管理器将 Web Analytics 添加到我的网站吗?

可以。不需要像此处显示的那样使用标签管理器嵌入脚本:

<script
	type="module"
	src="https://static.cloudflareinsights.com/beacon.min.js"
	data-cf-beacon='{"token": "$SITE_TOKEN"}'
></script>

添加以下脚本:

<script
	type="module"
	src="https://static.cloudflareinsights.com/beacon.min.js?token=$SITE_TOKEN"
></script>

我需要在我的内容安全策略 (CSP) 中添加什么?

如果您的网站实施了内容安全策略 (CSP),您将需要在该 HTTP 标头中添加一些条目,以允许浏览器下载信标脚本并将信标传输到 Cloudflare。

警告: 在向您的生产环境发布更新之前,请务必在测试环境中验证任何 CSP 更改。您可能希望先使用 内容安全规则 或尝试 Content-Security-Policy-Report-Only

您首先需要通过将其添加到您的 script-src 指令中以允许我们的脚本执行:

script-src [...existing values...] https://static.cloudflareinsights.com/beacon.min.js

注意:如果您按照上面的 Google 跟踪代码管理器示例,在脚本中有一个查询字符串,那么您还需要在 URL 中包含它,例如 script-src [...existing values...] https://static.cloudflareinsights.com/beacon.min.js?token=$SITE_TOKEN

其次,您需要允许我们将信标数据传输至的端点。

对于自动注入,这将是同一域,因此请确保您的 connect-src 包含 'self'

connect-src [...existing values...] 'self'

对于手动嵌入,此脚本将连接到 cloudflareinsights.com,因此请确保包含该域名:

connect-src [...existing values...] cloudflareinsights.com

如何将子资源完整性 (SRI) 与 JS 信标配合使用?

如果您使用的是自动注入(即上面未提到的手动嵌入脚本方法),Cloudflare 会自动在 <script> 中包含 integrity 属性。这可确保只有其下载内容的本地哈希值与 HTML 中提供的完整性哈希值匹配时,脚本才会执行。

遗憾的是,如果您使用的是手动嵌入脚本的方法,目前无法安全地应用 integrity 属性,因为我们不支持版本固定我们的信标脚本。我们这样做是为了确保我们能够发布定期更新以维护安全性、解决错误并确保其运行状态。

我可以为不同的域名使用相同的 JS 代码片段吗?

不可以。但是,如果顶级域名(也称为“根域名”或“裸域名”)相同,则可以使用相同的站点标签。例如,如果您在注册站点时向我们提供了主机名 example.com,由于它们使用相同的顶级域名,您可以将该站点的 JS 代码片段用于 abc.example.comdef.example.com。当有效负载被发送到信标端点时,我们会使用后缀匹配验证主机名,所以如果您的域名共享相同的顶级域名,这将有效。

我可以通过仅 DNS 域名(CNAME 设置)使用自动设置吗?

不可以,只有当您的域名流量通过 Cloudflare 代理(橙色云朵)时,您才能使用 JS 代码片段注入的 自动设置

如果您有一个仅 DNS 域名,则需要进行 手动设置

什么会阻止 JS 代码片段添加到页面?

要让 Cloudflare 自动添加 JavaScript 代码片段,您的页面需要包含有效的 HTML。

例如,Cloudflare 无法在如下页面上启用 Web Analytics:

index.htmlhtml
Hello world.

为了让 Web Analytics 正确插入 JavaScript 代码片段,您需要有效的 HTML 输出,例如:

index.htmlhtml
<!DOCTYPE html>
<html>
	<head>
		<title>Title</title>
	</head>
	<body>

		<p>Hello world.</p>

	</body>
</html>

我可以通过 Cloudflare Workers 使用真实用户监控 (RUM) 吗?

Cloudflare 的真实用户监控 (RUM) 仅针对初始客户端请求进行操作,无法从 Worker 子请求收集指标。这是一项基本的架构限制,旨在确保准确的性能测量并防止重复或误导性的分析数据。


功能

数据是抽样的吗?

我们保留过去 7 天内未抽样的信标数据,在此之后,数据将聚合至约 10%。

在 Cloudflare 仪表板中聚合指标或查询 GraphQL API 时,将根据应用的过滤条件和匹配行的体积,动态选择一种抽样级别(在 0.0001% 和 100% 之间)。这确保了对数字准确性的高置信度,同时保持了合理的响应时间。您可以 在 Cloudflare 博客上了解关于此方法的更多信息

注意:GraphQL API 公开了一个 sampleInterval 字段,以指示对查询应用了何种抽样级别。

  • 信标脚本将在每次页面浏览时触发。
  • 数据摄入流水线不应用抽样——将记录接收到的每个信标。
  • 我们存储 7 天的未抽样数据。
  • 我们也会将其聚合下来,使其约为原始容量的 10%,用于长期存储。
  • 对于流量非常低的站点,将会对其进行更大百分比的抽样,以保持对总体数字的高置信度。

我可以按 URL 查看服务器端分析吗?

Web Analytics 仅显示客户端分析。所有代理流量的 Cloudflare 客户还可以在其边缘获得基于流量的分析。

目前,Pro、Business 和 Enterprise 套餐的用户可以获得高级 HTTP 流量分析,这也是查看服务器端分析数据并按 URL 细分流量等功能的唯一途径。

我可以在多长时间内访问 Web Analytics 中的数据?

目前,您可以访问前六个月的数据。

Cloudflare Web Analytics 支持 UTM 参数吗?

尚不支持。UTM 参数是一种特殊的查询字符串参数,有助于跟踪流量来源。 目前,Cloudflare Web Analytics 不记录查询字符串,以避免收集潜在的敏感数据,但我们未来可能会加入对此的支持。

Web Analytics 支持自定义事件吗?

尚不支持,但我们未来可能会加入对此的支持。

我可以使用 Web Analytics 跟踪多个网站吗?

可以。目前每个账户有 10 个站点的软限制,但这可以通过联系 Cloudflare 支持部门进行调整。

信标何时将指标发送到 /cdn-cgi/rum/ 端点?

对于传统网站,非单页应用程序 (SPA),Web Analytics 信标在页面完成加载(load 事件)以及用户离开页面时,向 /cdn-cgi/rum/ 端点报告。对于单页应用程序,将会为每次路由更改发送额外的指标,以捕获页面加载事件。

这篇文档对您有帮助吗?