如何在javascript中捕获错误证书权限无效

lrl1mhuk  于 2021-09-13  发布在  Java
关注(0)|答案(3)|浏览(614)

我正在开发的web应用程序需要从本地网络中的多个不同物联网获取数据,例如。,

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\u cert\u authority\u invalid、err\u ssl\u protocol\u error或err\u conneciton\u拒绝。。。等,以便我可以相应地显示不同的错误消息。
不幸的是,fetch()函数总是在上述三种不同错误下引发相同的“typeerror:failed to fetch”异常。
我是否可以捕获此特定错误证书颁发机构无效异常?
非常感谢。

f45qwnt8

f45qwnt81#

我查看了fetchpollyfill代码,它的功能应该与本机浏览器实现相同(尽管错误消息不同)。它不包括有关遇到的特定错误的信息。这里有两条线 TypeError 它们都是这样的:

reject(new TypeError('Network request failed'))

因此,您只会收到一条错误消息,而没有其他信息。查看typeerror的文档,除了一个简单的 Exception . TypeError 是规范要求在这种情况下抛出的。
您可能会找到另一个更具体地报告错误的库。我四处搜索了一下,但仅仅从文档中很难找到一个库是否具有该功能。您可能需要试用它们,看看它们提供什么样的错误报告。以下是几个选项:
axios
超级药剂
或者您可以尝试使用 XMLHttpRequest 直接的。这个 fetch pollyfill代码是一个很好的起点。您可以分叉该项目并添加一些 console.log 让我们看看它报告了什么样的错误。

34gzjxbg

34gzjxbg2#

ERR_CERT_AUTHORITY_INVALID 错误与https连接有关。要解决此问题,必须输入api基本url(例如 https://192.168.0.245 (或 https://192.168.0.245/api )是的基本url https://192.168.0.245/api/auto/login )在浏览器中单击“高级”按钮后,再单击“不安全”按钮。
在此之后,您可能会遇到404错误页面。现在,您可以在项目中再次使用api,而不会出现任何问题。

vddsk6oq

vddsk6oq3#

如果您的internet连接不安全,则可能会出现此错误。表示它不是https。
或者,您可以从服务器端删除ssl证书。因此,您的请求格式应为“http://192.168.0.245/api/auto/login".

相关问题