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

Grafana数据源插件开发出现No Host in request URL错误如何解决

问题原因

报错的核心是Grafana代理服务无法解析到目标请求的Host,问题由两处配置逻辑不匹配导致:

  1. plugin.json中routes配置的逻辑是:配置的path字段为匹配规则,匹配到对应前缀的请求会被转发到url字段指定的远端地址前缀。你在datasourceRequest中拼接了this.url + '/grafana/grafana',但这里的this.url实际指向Grafana本地代理前缀/api/datasources/proxy/xxx/,不是你在routes中配置的远端目标地址。
  2. 你没有正确使用代理路由的匹配规则,直接拼接本地代理前缀的请求会让Grafana代理忽略routes规则,无法正确替换Host部分,最终发起的代理请求没有合法的目标Host,就抛出了no Host in request URL的错误。

解决步骤

1. 修正plugin.json的routes配置

首先保证plugin.json中的routes数组配置完整,正确格式示例如下:

"routes": [
  {
    "path": "github",
    "url": "https://github.com",
    "method": ["GET", "POST"]
  }
]

其中path是要匹配的本地请求前缀,url是要转发的远端目标前缀。

2. 修改testDatasource的请求写法

不要拼接this.url,直接使用routes中配置的path作为请求前缀即可,Grafana的datasourceRequest会自动识别前缀匹配对应routes规则,完成代理转发:

async testDatasource() {
  return getBackendSrv()
    .datasourceRequest({
      // 直接写匹配routes path的路径即可,无需拼接this.url
      url: '/github/grafana/grafana',
      method: 'GET',
    })
    .then(response => {
      if (response.status === 200) {
        return { status: 'success', message: 'Data source is working', title: 'Success' };
      } else {
        return { status: 'failure', message: 'Data source is not working: ' + response.status, title: 'Failure' };
      }
    });
}

额外校验点

如果修改后仍有异常,可以检查以下两项配置:

  • 确认插件已重新打包,Grafana服务已重启加载最新的插件配置
  • 如果你使用的是Grafana 8.x及以上版本,需要在plugin.json中补充"proxyEnabled": true配置开启代理能力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:57:03