如何在 JavaScript 中捕获 ERR_CERT_AUTHORITY_INVALID

2023-11-24

我正在开发的 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那个扔TypeErrors 并且它们看起来都是这样的:

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

因此,您只会收到一条错误消息,而不会收到其他信息。并查看文档类型错误,除了简单的信息之外,您不会获得任何额外的信息Exception. TypeError是什么spec在这种情况下需要抛出。

您也许可以找到另一个更具体地报告错误的库。我搜索了一下,但很难仅从文档中找出库是否具有该功能。您可能需要尝试一下,看看它们提供了什么样的错误报告。这里有几个选项:

  • axios
  • 超级代理人

或者您可以尝试使用以下方法实施解决方案XMLHttpRequest直接地。这fetchpollyfill 代码是一个很好的起点。你可以分叉该项目并添加一些console.log看看它报告了什么类型的错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中捕获 ERR_CERT_AUTHORITY_INVALID 的相关文章

  • setInterval() 如何影响性能?

    我们正在使用 Twitter Bootstrap 作为框架构建一个 Web 应用程序 但在显示 隐藏工具提示时遇到问题 除了尝试找到实际问题的解决方案之外 我还有一个关于我们同时使用的解决方法的问题 从性能角度来看 使用 setInterv
  • 我们在哪里/什么时候使用 JSON?

    你能告诉我 JSON 有什么用 在 Javascript 和 PHP 中 当我们需要 JSON 方法时 我从以下链接中阅读 但是 我没有获得有关任何项目的 JSON 实现的任何信息 http www json org js html htt
  • WebPack 源映射令人困惑(重复文件)

    我决定在我今天正在启动的一个新项目上尝试 WebPack 并且我从源映射中得到了非常奇怪的行为 我在文档中找不到任何相关信息 在浏览 StackOverflow 时也找不到其他人遇到此问题 我目前正在查看由以下公司制作的 HelloWorl
  • 在 Node.js 中实现服务器发送事件的简单方法?

    我环顾四周 似乎在 Node js 中实现 SSE 的所有方法都是通过更复杂的代码 但似乎应该有一种更简单的方法来发送和接收 SSE 是否有任何 API 或模块可以让这件事变得更简单 这是一个每秒发送一个服务器发送事件 SSE 的 Expr
  • 动态添加jinja模板

    我有一个 jinja 模板 它是一组 div 标签内的唯一内容 div include temppage html div 当我按下按钮时 我想用其他内容替换标签之间的所有内容 我希望用另一个 jinja 模板 include realpa
  • 移动浏览器上的 Javascript / jQuery 页面更改事件

    我正在设计一个移动网站 同时考虑所有领先的浏览器 Safari Chrome Dolphin Opera 我想显示一个 正在加载 元素页面导航 更改 请求新页面 我无法在锚标签上使用点击事件 因为有很多锚标签存在preventDefault
  • Google javascript 登录 api:无法离线访问

    我正在尝试为服务器端应用程序实现 Google 登录 如 Google 文档中所示 服务器端应用程序的 Google 登录 https developers google com identity sign in web server si
  • 无法使用 MV3 从 Firefox 下的通用脚本导出到 background.js

    我试图在服务工作者 background js 和内容脚本之间重用一些功能 https stackoverflow com questions 73421706 how to reuse a javascript function betw
  • 传单圆圈绘制/编辑问题

    我第一次制作传单 并面临绘制圆圈和编辑 更改圆圈位置 的问题 我面临的问题是 编辑 移动 圆从一个位置到另一位置会改变其半径 Note 请尝试在给定的小提琴中在地图顶部创建圆圈 然后通过单击编辑按钮将其移动到底部 如果我在地图的顶部创建圆圈
  • 确定用户是否在shadow dom之外单击

    我正在尝试实现一个下拉菜单 您可以单击外部将其关闭 下拉列表是自定义日期输入的一部分 并且封装在输入的影子 DOM 内 我想写一些类似的东西 window addEventListener mousedown function evt if
  • Bootstrap shown.bs.tab 事件不起作用

    我正在使用灵活的模板 http the8guild com themes html flexy v1 7 stylesPage html 使用引导程序 并且我无法让选项卡上的 shown bs tab 事件正常工作 我已经成功让它发挥作用J
  • 递归链接 Promise

    我正在开发一个简单的 Windows 8 应用程序 我需要在其中从网站获取一组数据 我正在使用 WinJS xhr 来检索此数据 它返回一个 Promise 然后 我将回调传递到此 Promise 的 then 方法中 该方法为我的回调提供
  • Node.js 循环发送 http 请求

    我实际上遇到了使用 node js 执行的 javascript 代码的问题 我需要循环发送http请求到远程服务器 我在代码中设置了www google ca 这是我的代码 var http require http var option
  • Firefox CSS 旋转与 Chrome 旋转不同

    我想制作一个 3D 矩形 平行六面体 用户可以用箭头移动它 它在 Chrome 中工作得很好 但在 Firefox 中 一些转换 实际上很多 与 Chrome 不同 看着this https jsfiddle net 7273yur9 2
  • jqPlot DateAxis tickInterval 不起作用

    我试图每月绘制一个包含单个数据点的图表 我会在每个月的第一天将其作为一个点发送到 jqPlot jqplot actualChart 2011 10 01 0 296 2011 11 01 0 682 title programSelect
  • Nuxt + Vuex - 如何将 Vuex 模块分解为单独的文件?

    在 Nuxt 文档中 here https nuxtjs org guide vuex store module files 它说 您可以选择将模块文件分解为单独的文件 state js actions js mutations js an
  • 用于检查字符串是否至少包含 3 个字母数字字符的最有效的正则表达式

    我有这个正则表达式 a zA Z0 9 3 我用它来查看字符串中是否至少包含 3 个字母数字字符 似乎有效 它应该匹配的字符串示例 a3c 0 c 8 9 9d 但是 我需要它更快地工作 有没有更好的方法使用正则表达式来匹配相同的模式 编辑
  • 如何设置 .eslintrc 来识别“require”?

    我是新来的ESLint http eslint org 并且我已经成功地将 ESLint 与IntelliJ https www jetbrains com idea 开箱即用 我的 ESLint 集成无法识别node 但对文档的基本审查表
  • angularjs 将 ngModel 从包装器指令传递到包装器指令

    我是 Angular 的新手 但仍然痛苦地纠结于自定义指令 我想重用这段 HTML
  • nodeJS exec 不适用于“cd”shell cmd

    var sys require sys exec require child process exec exec cd home ubuntu distro function err stdout stderr console log cd

随机推荐

  • 强制 try 块在两者之间中断的最佳方法是什么?

    我有一个try catch阻止我想要的break like a switch阻止但我找不到推荐的方法 我正在获取大量数据try catch块并希望在满足特定条件的情况下停止其间的获取 只是为了让它现在正常工作 我故意强制代码进入catch
  • CBCentralManager iOS10 和 iOS9

    所以我要迁移到 iOS10 但我还需要我的代码在 iOS9 上运行 我正在使用 CoreBluetooth 和 CBCentralManagerDelegate 我可以让我的代码适用于 iOS10 但我也需要后备才能适用于 iOS9 fun
  • len(List) 与读取变量的性能

    类似的问题已经被问过len 函数的成本这里 然而 这个问题着眼于成本len它自己 假设我有一个重复多次的代码len List 每次都是O 1 读取变量也是O 1 再加上分配它也是O 1 作为旁注 我发现n files len Files 比
  • 如何将点击事件从一个div传递到另一个div?

    我需要找到一种方法将点击事件从顶部的 div 传递到其下方的 div 并忽略较高 div 上的点击 有一种已知的方法可以模拟单击事件并将其传递给另一个 div 但这不是自然行为 也是最不想要的选项 看来事件冒泡在这里没有帮助 因为顶部的 d
  • 如何在 YouTube Android 播放器中为 YouTube 视频提供开始和结束参数?

    我正在使用 Youtube Player api 在我的应用程序中播放 YouTube 视频 我想从假设 36 秒开始播放视频 并希望在 65 秒左右结束该视频 例子 我正在使用 youtubeAndroidPlayerApi 我没有找到
  • IIS Web 部署 - 创建虚拟目录?

    在 VS2010 IIS 7 5 上开发站点时 我使用 Web Deploy 将站点从我的计算机发布到开发站点服务器 该站点有大约 40 个虚拟目录 我想在部署期间在服务器上自动创建这些目录 有没有一种简单的方法可以做到这一点 我正在考虑编
  • ASP.NET 表单身份验证和“无身份验证”子文件夹

    是否可以禁用经过表单验证的网站子文件夹中的所有身份验证 你如何做到这一点 是的 将 web config 文件放在子文件夹中 其中包含以下内容
  • 如何构建自定义 libcurl 以仅支持 HTTP / HTTPS 协议

    我仅使用 libcurl 来发出 HTTP HTTPS 请求 我已经下载了源代码并构建为静态库 我的最终可执行文件的大小有所增加 我正在尝试减少我的可执行文件 因为我有其他限制 在分析过程中 我观察到 libcurl 是支持许多协议 包括
  • 如何循环遍历表的所有行? (MySQL)

    我有一张表A 有一个主键ID 现在我想遍历 A 中的所有行 我发现类似 对于 A 中的每条记录 之类的内容 但这似乎不是您在 MySQL 中执行的方式 事情是对于每一行 我想获取一个字段并对其进行转换 将其插入到另一个表中 然后更新该行的一
  • 嵌入编程式 UIView 中的自动布局 XIB 未调整父级的大小

    我有一个 xib 文件 表示一个带有自动布局的简单视图 我正在实例化它 NSBundle mainBundle loadNibNamed name 0 并添加到以编程方式创建的UIView via addSubview 问题是视图没有拉伸以
  • 如何检测Python在幕后进行的方法调用?

    特别是 我想查看特定代码行正在调用哪个魔术方法 例如 我知道1 2实际上打电话 1 add 2 and 1 2 3 0 calls 1 2 3 getitem 0 我想知道其他操作调用了哪些魔术方法 而不必在网上查找 没有一个好的方法来检查
  • 使用 Node js imap 读取电子邮件正文

    我正在尝试读取使用 Node js 检索的电子邮件正文 我正在使用这个 npm 模块 https github com mscdex node imap 除了阅读正文内容之外 我几乎可以获得电子邮件的所有信息 有任何想法吗 Thanks 您
  • Laravel 5.6 aws cloudwatch 日志

    将 laravel 从 5 4 升级到 5 6 Laravel 从 5 6 版本开始删除了 app gt configureMonologUsing aws 的教程不再适用 https aws amazon com tw blogs dev
  • 如何制作没有文字的单选按钮?

    我只想要一个没有文本的简单 RadioBttun 我执行了下面的代码 但我得到的是一个单选按钮小部件 空间很小 我认为这是保留给文本的 那么应该如何摆脱这个空间呢
  • 为什么锁对象必须是静态的?

    在多线程中使用私有静态只读对象进行锁定是很常见的 据我所知 私有通过加强封装减少了锁定对象的入口点 从而减少了对最重要内容的访问 但为什么是静态的呢 private static readonly object Locker new obj
  • 使用 QtCreator 设置 GDB

    我有一个使用OpenCV和cmake的简单项目 并且有两个源文件 只有segmentation h和segmentation cpp 这是 cmake 文件 project Segment cmake minimum required VE
  • 无需预览即可打印 WebBrowser,即单击打印

    我有一个 c Net 应用程序 它打开一个自定义打印预览表单 损害显示 HTML 文件的 WebBrowser 表单控件和打印 Web 浏览器控件内容的按钮 webBrowser Print 但是 我现在想打印 HTML 文件而不打开此表单
  • C#:当两个命名空间相似时尝试解析类时出现问题

    我遇到了一个问题 无法引用不同名称空间中的类 我有2节课 namespace Foo public class Class1 namespace My App Foo public class Class2 public void Some
  • 使用 CAML 的 MAX 查询

    我想选择一个共享点列表项 该列表项具有特定列的最大值 如何使用 CAML 查询执行此操作 以下 CAML 查询将返回给定列的最大值 var maxValue try using SPSite objSite new SPSite sSite
  • 如何在 JavaScript 中捕获 ERR_CERT_AUTHORITY_INVALID

    我正在开发的 Web 应用程序需要从本地网络内的许多不同的 IOT 获取数据 例如 const response await fetch https 192 168 0 245 api auto login options 由于是https