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

如何使用Axios实现Betfair API带客户端证书的POST请求并解决SSL报错

正确配置Axios客户端证书实现Betfair SSOID请求的方案

核心问题说明

你之前的配置存在两个核心错误:

  1. 参数对应错误:Python requests 库的 cert=(证书路径, 私钥路径) 参数,分别对应Node.js https.Agent的 cert(客户端证书内容)和 key(客户端私钥内容)参数,你之前误将私钥配置到了ca参数,ca是用来配置服务端根证书的,和客户端证书无关
  2. SELF_SIGNED_CERT_IN_CHAIN 报错是Node.js默认校验服务端证书链,当服务端证书是自签名或者信任链不被系统信任时触发的错误。

完整实现代码

首先确保你已经引入了所需依赖:

const fs = require('fs');
const https = require('https');
const axios = require('axios');

步骤1:构造正确的HTTPS Agent

const httpsAgent = new https.Agent({
  // 对应Python cert参数第一个值:客户端证书文件内容
  cert: fs.readFileSync('TestApp.crt'),
  // 对应Python cert参数第二个值:客户端私钥文件内容
  key: fs.readFileSync('client-2048.key'),
  // 如果你的私钥设置了密码,添加下方参数填写密码即可
  // passphrase: '你的私钥密码',
  // 临时解决自签名证书报错,生产环境不建议开启,建议配置ca参数传入Betfair官方根证书
  rejectUnauthorized: false
});

步骤2:将Agent传入Axios请求配置

axios({
  method: "POST",
  headers: headers,
  url: "https://identitysso-cert.betfair.com/api/certlogin",
  data: payload,
  // 传入配置好的HTTPS Agent
  httpsAgent: httpsAgent
})
.then(res => {
  // 这里处理返回结果,提取SSOID即可
  console.log('请求成功', res.data)
})
.catch(err => {
  console.error('请求失败', err)
})

注意事项

  • 不要使用FormData传递证书:客户端证书是TLS握手阶段传递的,不属于请求体的表单字段,你最开始的FormData方案逻辑方向错误
  • 生产环境建议关闭rejectUnauthorized: false配置,改为将Betfair官方的API根证书读取后传入ca参数,避免中间人攻击风险
  • 读取证书、私钥文件时建议使用绝对路径,避免相对路径导致的文件读取失败问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:45:03