Skip to content

HTTP Request HTTP请求节点常见问题#

以下是 HTTP Request HTTP请求节点 的一些常见错误和问题以及解决或故障排除的步骤。

Bad request - please check your parameters 错误请求 - 请检查您的参数#

当节点收到表示错误请求的 400 错误时显示此错误。此错误最常发生的原因是:

请查看您服务的 API 文档以格式化您的查询参数。

The resource you are requesting could not be found 找不到您请求的资源#

当您输入的端点 URL 无效时显示此错误。

这可能是由于 URL 中的拼写错误或已弃用的 API 造成的。请参考您服务的 API 文档以验证您拥有有效的端点。

Connection refused (ECONNREFUSED) 连接被拒绝#

当节点能够访问网络上的主机,但目标端口没有服务监听时,会显示此错误。TCP 连接被主动拒绝。这不是 DNS 失败、超时或防火墙丢包。

在自托管 n8n 中,最常见原因是 Docker 网络。在 n8n 容器内,localhost127.0.0.1 指向容器本身,而不是宿主机。从节点请求 http://localhost:5000 会落到 n8n 容器的 5000 端口,而该端口没有服务监听。

要解决此问题,请使用容器可路由到的名称访问目标:

  • 目标在宿主机上,Docker Desktop(Mac 或 Windows):在 URL 字段中使用 http://host.docker.internal:<port>。Docker Desktop 会自动添加此主机名。
  • 目标在宿主机上,Linux:向容器传递 --add-host=host.docker.internal:host-gateway,或在 docker-compose.yml 中设置 extra_hosts
    1
    2
    3
    4
    5
    services:
      n8n:
        image: docker.n8n.io/n8nio/n8n
        extra_hosts:
          - "host.docker.internal:host-gateway"
    
    MySQL 节点中也记录了相同修复方法。
  • 目标在同一个 Compose stack 的另一个容器中:使用服务名称作为主机名,例如 http://my-api:5000。请引用容器的内部端口,而不是已发布的 ports: 映射。

另一个单独原因会出现在 Node.js 17 及更高版本中,即使不使用 Docker 也可能发生:localhost 会先解析到 IPv6 地址 ::1,然后才是 127.0.0.1。如果目标只绑定到 127.0.0.1,IPv6 尝试会被拒绝,而 HTTP Request 节点内回退到 IPv4 并不总是成功。

URL 字段中使用 http://127.0.0.1:<port>,而不是 localhost

在重新运行工作流前,要验证修复是否生效,请进入 n8n 容器并使用 wget 尝试访问该 URL:

1
docker exec -it n8n wget -qO- http://host.docker.internal:5000/health

如果从容器内运行 wget 成功,HTTP Request 节点也会成功。如果 wget 也返回 "connection refused",原因在网络或目标服务,而不是 n8n。

在 n8n Cloud 上,工作流运行在 n8n 的基础设施中。那里没有指向你本机的 localhost,也无法直接访问你机器上的服务。请通过 tunnel 暴露仅本地可访问的目标,并在 HTTP Request 节点中使用公共 URL。

JSON parameter need to be an valid JSON#

当您将参数作为 JSON 传递但格式不是有效 JSON 时显示此错误。

要解决此问题,请检查您输入的 JSON 是否存在这些问题:

  • 在 JSON 检查器或语法解析器中测试您的 JSON,以查找缺少引号、多余或缺少逗号、格式不正确的数组、多余或缺少方括号或大括号等错误。
  • 如果您在节点中使用了 Expression 表达式,请确保您已将整个 JSON 包装在双大括号中,例如:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    {{
        {
        "myjson":
        {
            "name1": "value1",
            "name2": "value2",
            "array1":
                ["value1","value2"]
        }
        }
    }}
    

Forbidden - perhaps check your credentials 禁止 - 也许检查您的凭据#

当节点收到表示身份验证失败的 403 错误时显示此错误。

要解决此问题,请检查所选凭据并确保您可以使用它们进行身份验证。您可能需要:

  • 更新权限或范围,以便您的 API 密钥或帐户可以执行您选择的操作。
  • 以不同方式格式化您的通用凭据。
  • 使用适当的权限或范围生成新的 API 密钥或令牌。

429 - The service is receiving too many requests from you 429 - 服务接收到来自您的太多请求#

当节点从您正在调用的服务接收到 429 错误 时显示此错误。这通常意味着您已达到该服务的速率限制。您可以在 处理 API 速率限制 页面上了解更多信息。

要解决该错误,您可以使用 HTTP 请求节点的内置选项之一:

Batching 批处理#

使用此选项批量发送请求并在它们之间引入延迟。

  1. 在 HTTP Request HTTP请求节点中,选择 Add Option 添加选项 > Batching 批处理
  2. Items per Batch 每批项目数 设置为每个请求中包含的输入项数。
  3. Batch Interval (ms) 批处理间隔(毫秒) 设置为在请求之间引入延迟(毫秒)。例如,要每秒向 API 发送一个请求,请将 Batch Interval (ms) 批处理间隔(毫秒) 设置为 1000

Retry on Fail 失败时重试#

使用此选项在失败尝试后重试节点。

  1. 在 HTTP Request HTTP请求节点中,转到 Settings 设置 并启用 Retry on Fail 失败时重试
  2. Max Tries 最大尝试次数 设置为 n8n 应重试节点的最大次数。
  3. Wait Between Tries (ms) 尝试之间的等待时间(毫秒) 设置为重试之间所需的延迟(毫秒)。例如,要在再次重试请求之前等待一秒钟,请将 Wait Between Tries (ms) 尝试之间的等待时间(毫秒) 设置为 1000