怎么在javascript中捕获ERR_CERT_AUTHORITY_INVALID
本教程将介绍如何在javascript中捕获ERR_CERT_AUTHORITY_INVALID的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
我正在开发的Web应用程序需要从本地网络内的多个不同IOT获取数据,例如
const response = await fetch("https://192.168.0.245/api/auto/login", options);
由于是https连接,并且每个IOT都带有一个自签名的SSL证书,所以上面的FETCH()会抛出"TypeError:Failed to Fetch"错误(因为证书还没有被接受),应用会在浏览器控制台显示如下
OPTIONS https://192.168.0.245/api/auto/login net::ERR_CERT_AUTHORITY_INVALID
我需要的是能够在javascript中捕获此错误。具体地说,我需要能够捕获不同的错误,如ERR_CERT_AUTHORITY_INVALID、ERR_SSL_PROTOCOL_ERROR或ERR_CONNECITON_REJECTED.等,因此我可以相应地显示不同的错误消息。
遗憾的是,在上述三个不同的错误中,FETCH()函数总是抛出相同的"TypeError:Failed to Fetch"异常。
是否可以捕获此特定ERR_CERT_AUTHORITY_INVALID异常?
谢谢您。
推荐答案
我查看了fetch pollyfill code,它的功能应该与本机浏览器实现相同(尽管错误消息不同)。它不包括有关遇到的特定错误的信息。有twolines抛出TypeError
,它们看起来都是这样:
reject(new TypeError('Network request failed'))
因此您只会收到一条错误消息,而不会收到其他信息。查看TypeError的文档,除了简单的Exception
提供的信息之外,您不会获得任何额外的信息。TypeError
是spec在这种情况下需要抛出的对象。
您也许能够找到另一个更具体地报告错误的库。我四处搜索了一下,但仅从文档中很难找到库是否具有该特性。您可能需要尝试一下,看看它们提供了什么样的错误报告。以下是几个选项:
axios
superagent
或者您可以尝试直接使用XMLHttpRequest
实现解决方案。fetch
pollyfull代码就是一个很好的起点。您可以分叉该项目并添加一些console.log
,以查看它报告的错误类型。
好了关于怎么在javascript中捕获ERR_CERT_AUTHORITY_INVALID的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。