怎么在javascript中捕获ERR_CERT_AUTHORITY_INVALID

本教程将介绍如何在javascript中捕获ERR_CERT_AUTHORITY_INVALID的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么在javascript中捕获ERR_CERT_AUTHORITY_INVALID 教程 第1张

问题描述

我正在开发的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实现解决方案。fetchpollyfull代码就是一个很好的起点。您可以分叉该项目并添加一些console.log,以查看它报告的错误类型。

好了关于怎么在javascript中捕获ERR_CERT_AUTHORITY_INVALID的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。