这可能是因为axios不能从请求中正确读取证书文件,而请求包装工具可以。可以尝试使用Node.js中的fs模块手动读取证书文件并将其附加到请求头中。示例代码如下:
const fs = require('fs'); const https = require('https'); const axios = require('axios');
const cert = fs.readFileSync('path/to/cert.p12');
// Create a custom agent with the certificate const agent = new https.Agent({ pfx: cert, passphrase: 'your-passphrase' });
// Use the custom agent with axios axios.get('https://example.com/api', { httpsAgent: agent }) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); });
在上面的示例中,我们使用fs模块手动读取证书文件,并将其传递给https.Agent构造函数,然后将该代理用于axios请求中。如果证书受密码保护,还需要在代理对象中提供密码。
使用这种方法应该能够解决axios无法读取证书文件的问题。