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

如何在JavaScript中随API请求发送客户端SSL证书?含Postman与VSCode场景

Postman携带SSL证书的机制及VSCode中XMLHttpRequest的实现方案

一、Postman是如何携带证书发送请求的?

Postman的证书配置是应用级全局设置,和导出的前端请求代码逻辑完全脱节:

  • 你在Postman设置里添加的证书,会被存在Postman的本地配置中,当发起请求时,Postman底层的HTTP客户端(不是前端浏览器的XMLHttpRequest)会自动匹配目标域名对应的证书,把证书和请求一起发送。
  • 导出的JavaScript代码是模拟前端浏览器环境的请求逻辑,但前端浏览器的证书受浏览器安全策略管控,无法通过代码直接指定本地证书,所以导出代码里不会包含证书相关配置——这不是Postman漏了,而是两种环境的证书机制根本不一样。

二、VSCode中通过XMLHttpRequest发送SSL证书的方法

要分两种运行环境来看:

1. Node.js环境(VSCode运行Node脚本)

前端原生的XMLHttpRequest不支持加载本地证书,但Node.js环境下可以用xhr2库(兼容XMLHttpRequest API,同时支持Node的证书配置):

  • 先安装依赖:
    npm install xhr2
    
  • 编写示例代码:
    const XMLHttpRequest = require('xhr2');
    const fs = require('fs');
    
    const xhr = new XMLHttpRequest();
    const apiUrl = 'https://your-protected-api-domain.com';
    
    xhr.open('GET', apiUrl, true);
    // 配置证书文件路径
    xhr.cert = fs.readFileSync('/absolute/path/to/your/client-cert.pem');
    xhr.key = fs.readFileSync('/absolute/path/to/your/private-key.pem');
    // 如果API的CA证书是自定义的,还需要配置CA
    xhr.ca = fs.readFileSync('/absolute/path/to/ca-cert.pem');
    
    xhr.onload = function() {
      if (this.status >= 200 && this.status < 300) {
        console.log('请求成功:', this.responseText);
      } else {
        console.error('请求失败:', this.statusText);
      }
    };
    
    xhr.onerror = function() {
      console.error('网络错误');
    };
    
    xhr.send();
    

2. 浏览器前端环境(VSCode开发后在浏览器运行)

浏览器环境下,XMLHttpRequest无法通过JS代码直接读取本地证书,必须通过浏览器的证书管理系统配置:

  • 将你的客户端证书导入到浏览器的信任证书库中(比如Chrome:设置→隐私和安全→安全→管理证书→导入)
  • 当访问受保护的API时,浏览器会自动弹出证书选择弹窗,选中你导入的证书后,请求就会自动携带证书发送。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:55:24