HTTP Request HTTP请求节点常见问题#
以下是 HTTP Request HTTP请求节点 的一些常见错误和问题以及解决或故障排除的步骤。
Bad request - please check your parameters 错误请求 - 请检查您的参数#
当节点收到表示错误请求的 400 错误时显示此错误。此错误最常发生的原因是:
- 您在 Query Parameter 查询参数 中使用了无效的名称或值。
- 您在 Query Parameter 查询参数 中传递数组值,但数组格式不正确。尝试使用 Array Format in Query Parameters 查询参数中的数组格式 选项。
请查看您服务的 API 文档以格式化您的查询参数。
The resource you are requesting could not be found 找不到您请求的资源#
当您输入的端点 URL 无效时显示此错误。
这可能是由于 URL 中的拼写错误或已弃用的 API 造成的。请参考您服务的 API 文档以验证您拥有有效的端点。
Connection refused (ECONNREFUSED) 连接被拒绝#
当节点能够访问网络上的主机,但目标端口没有服务监听时,会显示此错误。TCP 连接被主动拒绝。这不是 DNS 失败、超时或防火墙丢包。
在自托管 n8n 中,最常见原因是 Docker 网络。在 n8n 容器内,localhost 和 127.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:MySQL 节点中也记录了相同修复方法。1 2 3 4 5
services: n8n: image: docker.n8n.io/n8nio/n8n extra_hosts: - "host.docker.internal:host-gateway" - 目标在同一个 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 | |
如果从容器内运行 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 批处理#
使用此选项批量发送请求并在它们之间引入延迟。
- 在 HTTP Request HTTP请求节点中,选择 Add Option 添加选项 > Batching 批处理。
- 将 Items per Batch 每批项目数 设置为每个请求中包含的输入项数。
- 将 Batch Interval (ms) 批处理间隔(毫秒) 设置为在请求之间引入延迟(毫秒)。例如,要每秒向 API 发送一个请求,请将 Batch Interval (ms) 批处理间隔(毫秒) 设置为
1000。
Retry on Fail 失败时重试#
使用此选项在失败尝试后重试节点。
- 在 HTTP Request HTTP请求节点中,转到 Settings 设置 并启用 Retry on Fail 失败时重试。
- 将 Max Tries 最大尝试次数 设置为 n8n 应重试节点的最大次数。
- 将 Wait Between Tries (ms) 尝试之间的等待时间(毫秒) 设置为重试之间所需的延迟(毫秒)。例如,要在再次重试请求之前等待一秒钟,请将 Wait Between Tries (ms) 尝试之间的等待时间(毫秒) 设置为
1000。