使用axios获取错误证书授权无效

pvcm50d1  于 2023-03-08  发布在  iOS
关注(0)|答案(1)|浏览(523)

我尝试使用vue-axios通过https进行post请求,但是,由于我使用的是自己创建的自签名证书,因此出现以下错误:
网络::错误证书授权无效
经过搜索,我发现大多数人通过以下方法解决这个问题

const instance = axios.create({
  httpsAgent: new https.Agent({  
    rejectUnauthorized: false
  })
});
instance.get('https://something.com/foo');

// At request level
const agent = new https.Agent({  
  rejectUnauthorized: false
});
axios.get('https://something.com/foo', { httpsAgent: agent });

我尝试了两种方法,但都没有成功,我使用npm https模块作为https.Agent。
有没有人知道如何解决这个问题?或者我应该只从axios换到其他模块?
编辑:
我现在运行的代码中出现了错误

const axiosInstance = axios.create({
  baseURL: 'https://localhost:5000',
  httpsAgent: new https.Agent({
    rejectUnauthorized: false
  }),
});
axiosInstance.post('/user', LoginRequest, 
  { headers: { 'Content-Type': 'application/json' } })
    .then(response => this.assignLogin(response.data));

尝试更改为名为needle的模块并使用https,但出现相同错误:
针头:

const headers = { 'Content-Type': 'application/json' };
      const options = {
          method: 'POST',
          headers: headers,
          rejectUnauthorized: false,
          requestCert: true,
          agent: false,
          strictSSL: false,
      }
      needle.post('https://localhost:5000/user', LoginRequest, options).on('end', function() { })

https:

const options = {
         hostname: 'localhost',
         port: 5000,
         path: '/user',
         strictSSL: false,
         rejectUnauthorized: false,
         secureProtocol: 'TLSv1_method',
         method: 'POST',
         headers: {
           'Content-Type': 'application/json',
         },
       };
       const req = https.request(options, (res) => {
         console.log('statusCode:', res.statusCode);
         console.log('headers:', res.headers);

         res.on('data', (d) => {
           this.assignLogin(d);
         });
       });
       req.on('error', (e) => {
         console.error(e);
       });
       req.write(LoginRequest);
       req.end();
mwkjh3gx

mwkjh3gx1#

既然你提到你使用的是你自己创建的自签名证书,我猜你是用它来进行本地开发测试的。我在Chrome中进行本地测试时也遇到过类似的问题。
由于此错误消息(net::ERR_CERT_AUTHORITY_INVALID)是Chrome阻止具有"不安全"证书的URL的一种方式,您需要通过Chrome解决此问题,告诉它您信任该证书。
我使用的解决方案是旧的thisisunsafe.(只有在您真正信任证书的情况下才使用此解决方案,即它是您自己的证书):

    • 溶液**:只需在Chrome中打开一个标签页,尝试打开一个带有您的服务器地址的URL(在您的情况下,https://localhost:5000/)。Chrome将显示一条警告消息,因此您可以在窗口中的任意位置单击,然后键入thisisunsafe。Chrome现在将允许访问此证书。当您再次重新加载客户端并尝试请求服务器时,它将工作。

相关问题