You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matomo API调用出现ERR_CONNECTION_TIMED_OUT错误求助

Matomo API 连接超时问题排查及代码错误分析

代码中的明显错误

  • HTML实体误用:代码里用&拼接参数,这是HTML转义字符,在JavaScript中需直接使用&,否则会导致API参数格式无效,服务器无法正确解析请求,进而引发无响应或超时。
  • Fetch超时设置无效:原生fetch不支持timeout配置项,你设置的{timeout: 60000}不会生效,需用AbortController实现超时控制。
  • 数据解析缺失:代码直接使用未定义的data变量,且未将response转为JSON格式,无法正确获取返回数据。
  • 参数未编码:companyName作为segment参数未做URL编码,若包含特殊字符会破坏请求结构,导致异常。

修正后的代码示例

var apiUrl = 'https://dummy.matomo.de/';
var auth_token = 'dummyAuthToken12345';
var siteId = '5';
var exitPage = '&method=Actions.getExitPageUrls';
// 对segment参数做URL编码
var encodedSegment = encodeURIComponent(companyName);
// 用AbortController实现超时控制
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 60000);

fetch(`${apiUrl}?module=API${exitPage}&idSite=${siteId}&segment=${encodedSegment}&token_auth=${auth_token}&format=json`, {
  signal: controller.signal
})
.then(response => {
  if (!response.ok) {
    throw new Error(`HTTP错误!状态码: ${response.status}`);
  }
  return response.json();
})
.then(data => {
  var totalVisits = data[0]?.['nb_visits'];
  console.log(totalVisits);
})
.catch(error => {
  if (error.name === 'AbortError') {
    console.log('请求超时');
  } else {
    console.error('请求失败:', error);
  }
})
.finally(() => {
  clearTimeout(timeoutId);
});

额外排查方向

  • 直接在浏览器地址栏拼接完整的API请求URL,测试是否能正常返回JSON数据。如果浏览器也无法访问,说明Matomo服务端存在问题(如宕机、域名解析失败、CDN故障等)。
  • 检查Matomo服务器的CORS配置,确保允许你的前端域名发起跨域请求,CORS配置错误可能导致请求被阻塞,表现为超时。
  • 验证Auth Token的权限,确认该token有权限访问目标站点的API数据,权限不足可能导致服务器无响应。

内容的提问来源于stack exchange,提问作者Nyghtqore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:15:00