我正在开发的 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_REFUSED...等,以便我可以相应地显示不同的错误消息。
不幸的是,在上述所有这三个不同的错误下, fetch() 函数总是抛出相同的“TypeError: Failed to fetch”异常。
无论如何,我可以捕获这个特定的 ERR_CERT_AUTHORITY_INVALID 异常吗?
谢谢。
我看了看获取polyfill代码,其功能应与本机浏览器实现相同(尽管错误消息不同)。它不包含有关遇到的特定错误的信息。有two lines那个扔TypeError
s 并且它们看起来都是这样的:
reject(new TypeError('Network request failed'))
因此,您只会收到一条错误消息,而不会收到其他信息。并查看文档类型错误,除了简单的信息之外,您不会获得任何额外的信息Exception
. TypeError
是什么spec在这种情况下需要抛出。
您也许可以找到另一个更具体地报告错误的库。我搜索了一下,但很难仅从文档中找出库是否具有该功能。您可能需要尝试一下,看看它们提供了什么样的错误报告。这里有几个选项:
或者您可以尝试使用以下方法实施解决方案XMLHttpRequest
直接地。这fetch
pollyfill 代码是一个很好的起点。你可以分叉该项目并添加一些console.log
看看它报告了什么类型的错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)