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

Posted

技术标签:

【中文标题】SSL 证书 - 在 axios 中禁用验证并做出反应【英文标题】:SSL certificate - disable verification in axios and react 【发布时间】:2018-05-17 18:24:02 【问题描述】:

我正在尝试使用 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;

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

【问题讨论】:

这个问题+答案有点相似:***.com/questions/46968937/…。不过,那里使用的 NPM 包有点不同。希望这会有所帮助! 这是不可能的,因为浏览器开发人员(谷歌、苹果、微软、Mozilla、Brave 和 Opera)很久以前就决定让它不可能做到。您唯一能做的就是获得免费的 SSL 证书(不过,您需要拥有一个域名或子域名才能这样做) 为了获得无缝体验,您可以构建自己的代理来公开相同的服务集但具有有效证书。在服务器端运行的代理与位于无效证书后面的另一个服务通信没有问题。 【参考方案1】:

这是一种获得自签名和接受的本地主机证书的方法。基本上,您生成证书并在使用之前手动将其添加到 Chrome。

Let's Encrypt 指南:https://letsencrypt.org/docs/certificates-for-localhost/(似乎有点高级)。

也有这个答案,它解释了如何在您在站点时添加证书:https://***.com/a/18602774

【讨论】:

【参考方案2】:

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

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

例如对于 chrome,以 cmd line args 开头,如下所示

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

【讨论】:

以上是关于SSL 证书 - 在 axios 中禁用验证并做出反应的主要内容,如果未能解决你的问题,请参考以下文章

在 Axios 中禁用 SSL

markdown 使用自签名证书在git存储库中禁用SSL验证

如何禁用 cURL SSL 证书验证 [重复]

如何配置 axios 使用 SSL 证书?

如何配置 axios 使用 SSL 证书?

HttpsURLConnection 的禁用证书验证仍然出现 javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure