如何在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
,以查看它报告的错误类型。
相关文章