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

使用JavaScript Axios向以太坊Kovan网络发请求返回400错误求助

问题原因

你遇到的400错误本质是请求体不符合Infura以太坊节点的JSON-RPC 2.0接口规范,你当前自定义的blockID字段结构不是Infura认可的请求格式。

以太坊所有节点(包括Infura提供的节点)的RPC接口都要求请求体必须包含以下固定字段:

  • jsonrpc:固定值为"2.0"
  • method:你要调用的以太坊RPC方法名,比如获取区块用eth_getBlockByNumber、提交已签名交易用eth_sendRawTransaction
  • params:对应方法的参数数组
  • id:请求标识,可自定义数字或字符串
修正方案

这里假设你的需求是根据输入的区块号查询区块信息,给出修正后的代码示例:

const axios = require('axios');

document.getElementById("search").addEventListener('click', async () => {
  // 获取前端输入的区块号
  const BlockId = document.getElementById("blockID").value;
  // 注意:以太坊RPC要求区块号必须是0x开头的十六进制字符串,如果输入是十进制需要转换
  const blockHex = '0x' + parseInt(BlockId).toString(16);

  try {
    const response = await axios({
      method: 'post',
      url: "https://kovan.infura.io/v3/025faa826802466c8c568db0baa4aa32",
      headers: {
        'Content-Type': 'application/json'
      },
      // 标准JSON-RPC请求体
      data: {
        jsonrpc: "2.0",
        method: "eth_getBlockByNumber", // 替换为你实际需要调用的RPC方法
        params: [blockHex, false], // 第二个参数为false代表只返回交易哈希,true返回完整交易信息
        id: 1
      }
    });
    console.log("请求成功", response.data);
  } catch (error) {
    // 打印Infura返回的具体错误详情,方便排查
    console.log("错误详情:", error.response ? error.response.data : error.message);
  }
});
其他注意事项
  • 如果你实际需求是提交交易到链上,需要先在本地对交易签名,再调用eth_sendRawTransaction方法,把签名后的交易十六进制字符串放到params数组里,不能直接传区块ID
  • Kovan测试网已经弃用,建议切换到Goerli、Sepolia等仍在维护的测试网

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 11:24:03