SSL证书 - 在axios中禁用验证并做出反应

时间:2017-12-04 10:02:47

标签: node.js reactjs ssl axios

我正在尝试使用axios在我的反应应用程序中使用API​​。 API使用自签名证书通过HTTPS工作。到目前为止,连接时出现以下错误:

net::ERR_INSECURE_RESPONSE
bundle.js:65253 HTTP Failure in Axios Error: Network Error
    at createError (bundle.js:2188)
    at XMLHttpRequest.handleError (bundle.js:1717)

我尝试了以下但没有成功:

import axios from 'axios';

const https = require('https');

const agent = new https.Agent({
    rejectUnauthorized: false,
});

const client = axios.create({ //all axios can be used, shown in axios documentation
    baseURL: process.env.REACT_APP_API_URL,
    responseType: 'json',
    withCredentials: true,
    httpsAgent: agent
});

export default client;

有没有办法禁用证书验证?

4 个答案:

答案 0 :(得分:1)

首先,原因错误不在您的代码上。这是因为浏览器的安全性受到限制。默认情况下,浏览器将阻止自签名请求,因为它不是来自有效证书颁发机构(CA)的证书。

要么从CA升级SSL证书,要么需要在浏览器中禁用网络安全性。

例如对于chrome,请从cmd行args开始,如下所示

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --disable-gpu --user-data-dir=~/chromeTemp

答案 1 :(得分:0)

这是拥有自签名和接受的localhost证书的方法。基本上,您会生成证书并将其手动添加到Chrome中,然后再使用。

“让我们加密:https://letsencrypt.org/docs/certificates-for-localhost/指导”(似乎有点高级)。

也有此答案,它说明了如何在您访问站点时添加证书:https://stackoverflow.com/a/18602774

答案 2 :(得分:-1)

您始终可以使用Let's Encrypt来获取签名的SSL证书并在Web服务器上使用它。 据我所知(如果我错了,请纠正我)是当存在自签名SSL证书时,Chrome Web浏览器阻止您访问请求的资源。它与Axios无关。

答案 3 :(得分:-2)

仅出于发展目的

您可以暂时禁用Google Chrome浏览器的网络安全。但这不是永久性的解决方案:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --disable-gpu --user-data-dir=~/chromeTemp

或者您可以转到chrome:// flags并为从本地主机加载的资源启用允许无效证书。

编辑:

对不起,看来我误解了你的问题。如果您在开发条件下工作,并且生产中的证书问题将得到解决,则以上答案仅对开发有效。
但是通常,您无法避免错误,因为这种类型的连接将不安全,并且中间数据可能会被替换或被盗,此外,浏览器将阻止响应,在这种情况下与javascript无关