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

使用wallet_addEthereumChain向MetaMask添加HTTP地址的自定义网络失败的解决方案咨询

解决MetaMask添加HTTP RPC节点的报错问题

我之前也碰到过一模一样的情况——MetaMask出于安全考量,默认会阻止通过wallet_addEthereumChain API添加非HTTPS的RPC节点(除了本地环回地址比如localhost/127.0.0.1)。下面给你几个可行的解决思路,按推荐优先级排序:

1. 给你的RPC节点套一层HTTPS(生产环境首选)

这是最合规也最安全的方案,适合需要对外提供服务的场景。你可以通过以下方式实现:

  • 用Nginx做反向代理,配置SSL证书(可以用Let's Encrypt免费证书),把HTTP请求转发到你的geth节点,对外暴露HTTPS地址。
  • 使用Cloudflare等CDN服务,给你的HTTP节点启用HTTPS,Cloudflare会自动处理证书和加密传输。

调整你的代码里的rpcUrls为新的HTTPS地址即可:

const formattedChainId = hexStripZeros(BigNumber.from(chainId).toHexString());
try {
  await window.ethereum.request({
    method: "wallet_addEthereumChain",
    params: [
      {
        chainId: formattedChainId,
        chainName: "CU Internal",
        rpcUrls: ["https://your-proxied-address"], // 换成HTTPS地址
        nativeCurrency: {
          name: "ETH",
          symbol: "ETH",
          decimals: 18,
        },
        blockExplorerUrls: null,
      },
    ],
  });
} catch (error) {
  console.error("error adding eth network: ", error);
}

2. 引导用户手动添加HTTP节点

如果暂时无法配置HTTPS,你可以引导用户手动在MetaMask里添加网络,因为手动添加不受API的安全限制:

  • 打开MetaMask钱包,点击顶部的网络选择框
  • 选择「添加网络」->「添加自定义网络」
  • 输入你的RPC地址(http://myAddress)、链ID、原生货币信息等,保存即可

3. 本地开发场景:使用环回地址

如果你的geth节点是在本地运行的(比如开发环境),把RPC地址改成http://localhost:xxxx或者http://127.0.0.1:xxxx,MetaMask默认允许本地HTTP连接,这样API调用就能正常工作了。

4. 临时修改MetaMask安全设置(仅限测试环境)

⚠️ 注意:这个方法会降低MetaMask的整体安全性,只适合个人测试用,绝对不推荐给普通用户操作。

  • 打开MetaMask的设置页面,进入「高级」选项
  • 找到「允许使用HTTP连接的RPC」(不同版本可能叫「允许不安全的RPC连接」)并开启
  • 之后你的API调用就能添加HTTP节点了,但请测试完成后及时关闭这个选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:04:05