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

如何在xrpl.js中设置自定义请求头传递x-api-key鉴权参数

实现方案

xrpl.js 原生ConnectionOptions没有开放自定义请求头的配置入口,默认仅会自动生成Basic格式的Authorization请求头,要携带x-api-key这类自定义头,可根据运行环境选择对应实现方式:

方案1:重写连接实例的createWebSocket方法(全环境兼容)

该方案无需额外依赖,通过覆写连接实例的WebSocket创建逻辑,在握手阶段注入自定义请求头,同时保留原有鉴权逻辑的兼容性:

const { Client } = require('xrpl')

// 初始化客户端
const client = new Client('wss://你的区块链节点地址')
// 缓存原生WebSocket创建方法
const originCreateWs = client.connection.createWebSocket.bind(client.connection)

// 重写方法注入自定义头
client.connection.createWebSocket = function (url) {
  const wsInstance = originCreateWs(url)
  wsInstance.on('upgrade', () => {
    if (wsInstance._req) {
      // 追加自定义请求头
      wsInstance._req.setHeader('x-api-key', '<你的实际API密钥>')
    }
  })
  return wsInstance
}

// 正常调用连接即可
await client.connect()

方案2:传入自定义WebSocket构造器(仅Node.js环境适用)

Node.js环境下可以基于ws库封装带固定请求头的WebSocket类,初始化客户端时通过配置项传入,覆盖默认的WebSocket实现:

const { Client } = require('xrpl')
const WebSocket = require('ws')

// 封装默认携带自定义头的WebSocket实现
class ApiKeyWebSocket extends WebSocket {
  constructor(address, protocols) {
    super(address, protocols, {
      headers: {
        'x-api-key': '<你的实际API密钥>'
      }
    })
  }
}

// 初始化时传入自定义WebSocket类
const client = new Client('wss://你的区块链节点地址', {
  WebSocket: ApiKeyWebSocket
})

await client.connect()

浏览器环境特殊说明

浏览器端原生WebSocket API本身不支持在握手阶段自定义请求头,如果是前端场景直连节点,无法直接通过上述方式添加x-api-key,可选择两种替代方案:

  • 联系节点服务商,支持连接建立后通过第一条消息发送API密钥完成鉴权
  • 搭建一层反向代理,前端连接自己的代理地址,由代理层转发请求时自动追加x-api-key请求头

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:48:15