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

客户端调用带RPC登录凭证的monero-wallet-rpc接口返回401错误的求助

客户端调用带RPC登录凭证的monero-wallet-rpc接口返回401错误的求助

看起来你遇到的是Monero Wallet RPC的Basic Auth认证问题,我来帮你分析下可能的原因和解决办法:

首先先提个小细节,你代码里的consolelog应该是console.log,虽然这不是401的直接原因,但会影响后续调试时的日志输出,先修正这个笔误。

接下来是核心的401问题排查:

1. 移除不必要的请求头

你在axios请求里添加了Access-Control-Allow-Origin: *这个头——这是服务器响应时才需要返回的头,客户端请求时完全不需要发送它!浏览器的CORS机制会自动处理跨域相关逻辑,手动添加这个响应头反而可能干扰请求的正常处理,导致认证信息无法被服务器正确识别。

修正后的axios方法1代码:

try {
  const response = await axios.post('http://localhost:28083/json_rpc', {
    jsonrpc: '2.0',
    id: '0',
    method: 'make_integrated_address',
  },
  {
    headers: {
      'Content-Type': 'application/json',
      // 移除多余的 Access-Control-Allow-Origin 头
    },
    auth: {
      username: 'testuser',
      password: 'testpassword'
    }
  });
  const { integrated_address, payment_id } = response.data.result;
  console.log(integrated_address, payment_id); // 修正consolelog为console.log
} catch (error) {
  console.log('error:', error);
}

方法2也需要移除这个多余的头,只保留Content-Type和Authorization即可。

2. 检查Windows命令行参数的解析问题

你在启动monero-wallet-rpc时用了^换行符,在Windows CMD环境下,这种换行方式可能导致参数解析异常,尤其是包含引号的参数(比如--rpc-access-control-origins "*")。建议你把启动命令合并成一行测试,避免换行带来的解析问题:

monero-wallet-rpc --testnet --wallet-file C:/monero/testnet_wallet --password "Password" --rpc-bind-port 28083 --daemon-address http://localhost:28081 --rpc-login testuser:testpassword --rpc-access-control-origins "*" --tx-notify "C:/Windows/System32/curl.exe -X POST -H \"Content-Type: application/json\" -d \"{\\\"txid\\\":\\\"%s\\\"}\" http://localhost:3000/api/webhook"

如果合并后还是有问题,可以尝试转义引号:把--rpc-access-control-origins "*"改成--rpc-access-control-origins ^"*^"。

3. 手动构造Basic Auth头测试

有时候客户端工具(比如Windows下的curl、axios)可能在自动生成Basic Auth头时出现问题,你可以手动生成认证头测试:

  • 把testuser:testpassword用Base64编码,得到dGVzdHVzZXI6dGVzdHBhc3N3b3Jk
  • 在curl中手动添加这个头:
curl -v http://127.0.0.1:28083/json_rpc -H "Content-Type: application/json" -H "Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3N3b3Jk" -d "{\"jsonrpc\":\"2.0\",\"id\":\"0\",\"method\":\"make_integrated_address\",\"params\":{}}"

如果这个请求成功,说明自动生成认证头的方式有问题,你可以在axios中也手动使用这个头。

4. 验证RPC服务是否正确加载了登录凭证

查看monero-wallet-rpc的启动日志,确认是否有类似RPC server listening on 0.0.0.0:28083 with login 'testuser'的提示。如果日志里没有提到登录凭证,说明--rpc-login参数没有被正确解析,这时候需要检查参数的拼写和格式是否正确。

5. 排查网络拦截

暂时关闭Windows防火墙、杀毒软件等安全工具,有时候这些工具会过滤包含Authorization头的请求,导致认证失败。

备注:内容来源于stack exchange,提问作者watashi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:24:39