Axios携带基础认证与请求头发送GET请求报证书错误,Postman请求正常
问题根因定位
- 请求代码结构不符合axios的传参规范:
axios.get仅接受两个参数,第一个为请求URL,第二个为完整的请求配置对象。你目前将认证配置单独拆为第三个参数传入,这部分配置完全不会被axios解析生效,实际发起请求时并未携带对应账号密码的认证头。 - 证书拦截报错核心原因:你调用的接口域名使用的HTTPS证书未被浏览器的受信根CA列表认可(典型场景为自签名证书、内网私有CA签发证书),浏览器会在网络层直接拦截这类校验不通过的请求。而Postman默认开启了跳过SSL证书校验的开关,因此相同配置在Postman中可以正常返回结果,和接口本身的认证逻辑无关。
可落地方案
修正axios请求的代码结构,将所有配置合并到同一个config对象中,示例代码:
axios.get('https://example.net/rest/executions/1266026155/execution-log', { withCredentials: true, headers: { "Accept": "application/json", "Content-Type": "application/json" }, // 认证配置合并到同一config内 auth: { username: "username12345", password: "12345678" } }).then(response => { if (response.status === 200) { console.log("All OK") } })针对证书报错的分层处理:
- 正式生产环境:给接口域名配置公共受信CA签发的正规HTTPS证书,从根源上消除浏览器的证书拦截,这是唯一面向终端用户的可上线方案。
- 本地开发临时调试:如果是内网测试环境暂时无法更换证书,可以将接口对应的私有CA根证书导入到本地浏览器的受信任根证书列表中,导入完成后浏览器将不再抛出证书无效的拦截。
注意:浏览器端的证书校验是网络层行为,axios本身的配置(如
rejectUnauthorized: false)仅对Node.js运行环境的请求生效,完全无法绕过浏览器的内置证书拦截,不要尝试在浏览器端通过修改axios配置解决该报错。
内容的提问来源于stack exchange,提问作者Luis Ramirez
相关产品推荐
相关产品推荐

