如何修复:升级 Node 版本后出现“EPROTO”错误

2024-06-21

以下代码适用于 Node 的v10.15.3版本:

const { post } = require('request');

post({
  url: 'https://cidadao.sinesp.gov.br/sinesp-cidadao/mobile/consultar-placa/v4',
  body: '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<v:Envelope xmlns:v=\"http://schemas.xmlsoap.org/soap/envelope/\">\n  <v:Header>\n    <b>LGE Nexus 5</b>\n    <c>ANDROID</c>\n    <d>v4</d>\n    <e>4.3.2</e>\n    <f>98.193.54.223</f>\n    <g>514650d8dba4784ed08b5a029583576361a50bc5</g>\n    <h>-3272.3179572637086</h>\n    <i>940.839492700698</i>\n    <j/>\n    <k/>\n    <l>2019-05-24 10:24:35</l>\n    <m>8797e74f0d6eb7b1ff3dc114d4aa12d3</m>\n  </v:Header>\n  <v:Body xmlns:n0=\"http://soap.ws.placa.service.sinesp.serpro.gov.br/\">\n    <n0:getStatus>\n      <a>LSU3J43</a>\n    </n0:getStatus>\n  </v:Body>\n</v:Envelope>',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'User-Agent': 'SinespCidadao / 3.0.2.1 CFNetwork / 758.2.8 Darwin / 15.0.0',
    Host: 'cidadao.sinesp.gov.br'
  },
}, (err, httpResponse, body) => {
  if (err) return console.error(err);
  console.log(JSON.stringify(httpResponse));
});

但升级到之后v12.2.0或以上我收到以下错误:

Error: write EPROTO 17432:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:c:\ws\deps\openssl\openssl\ssl\statem\statem_lib.c:1922:

    at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:83:16) {
  errno: 'EPROTO',
  code: 'EPROTO',
  syscall: 'write'
}

我该如何修复它?


由于相同的代码可以在 Node.js 上运行v10.15.3,但不工作v12.2.0,并且错误消息指示“不支持的协议”,此问题最可能的根本原因是:Node.js 10 中支持的最低 TLS 版本是TLSv1.0, 但是由于v11.4.0,它被提升到TLSv1.2 (tls.DEFAULT_MIN_VERSION https://nodejs.org/api/tls.html#tls_tls_default_min_version)。我怀疑证书cidadao.sinesp.gov.br使用 TLSv1.0 进行签名,适用于 Node.jsv10.15.3,但不是在v12.2.0.

让 Node.js 接受TLSv1.0,您可以使用以下命令启动 Node.js 进程--tls-min-v1.0 option.

我做了一个实验,效果很好:

顺便说一句,证书cidadao.sinesp.gov.br现在无效。它自 2018 年 5 月以来已过期 - 正如 OP 提到的,请求应从巴西发送(或通过巴西的代理节点)。

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

如何修复:升级 Node 版本后出现“EPROTO”错误 的相关文章

随机推荐

  • ArrayBuffer 到 String、String 到 ArrayBuffer 方法

    这个问题过去已经得到了答案 但我肯定地说它仍然没有答案 一般而言 几乎都有关于 ArrayBuffers 的文档 更不用说特定应用程序了 我已经研究了好几天了 没有任何结果 本质上 我需要尝试转换从文件读取器获得的 ArrayBuffer
  • 如何用 clang 替换 llvm-ld ?

    Summary llvm ld已从LLVM 3 2 版本 http llvm org releases 3 2 docs ReleaseNotes html 我试图弄清楚如何在我的构建系统中使用 clang 请注意 我在编写时找到了自己问题
  • 无法从 gi.repository 导入 Webkit

    当我尝试导入时Webkit from gi repository 它给出了ImportError from gi repository import Webkit ERROR root Could not find any typelib
  • 如何在没有 Composer 的情况下安装 mpdf 7?

    我目前正在使用 mpdf 6 1 我想切换到 7 但我找不到安装它的方法without作曲家 是否有完整的软件包可供我在本地主机上下载 解压和测试 嗯 我花了几天时间寻找方法 终于找到了 你可以在这里下载完整的mpdf包site https
  • Xcode 中的搜索结果图标?

    我正在寻找有关 Xcode 搜索结果中显示的图标的信息 我认为有些图标的含义是显而易见的 M 方法 C 类 S 结构 Pr 协议等 但其他的则不那么明显 您在 Xcode 帮助列表中如何称呼这些图标 有描述这些图标的 传说 吗 我尝试过搜索
  • 像袋子一样压平元组

    我的数据集如下所示 A 1 2 B 2 9 我想 展平 Pig 中的元组 基本上为内部元组中找到的每个值重复每个记录 这样预期的输出是 A 1 A 2 B 2 B 9 我知道当元组 1 2 和 2 9 是袋时这是可能的 你的洞察力很好 可以
  • 如何使用apache poi检查Excel文件中的列是否隐藏

    我正在尝试使用 apache poi 解析 xls 文件 是否可以检查列是否隐藏 如何获取特定列的宽度 示例 根据帖子here https stackoverflow com questions 10529909 detecting hid
  • Android - WebView 中的 AdSense(适用于 BlackBerry Playbook - Android 运行时)

    我想在 Android 的 WebView 中显示 AdSense 广告 我知道我可以只使用 AdMob 广告 但我正在为 Playbook 进行开发 并且 Playbook 刚刚获得了 Android 虚拟运行时 因此大多数 AdMob
  • 忽略正则表达式匹配的空格

    我需要匹配 8 个或更多数字 其序列可以包含空格 例如 以下所有内容都是有效匹配 12345678 1 2345678 12 3 45678 1234 5678 12 34567 8 1 2 3 4 5 6 7 8 此刻我有 d 8 但这只
  • 同时读取多个 Emacs 信息文件

    对于阅读编程 和其他 文档来说 Emacs INFO 模式非常出色 如此出色 以至于我希望能够同时读取 Emacs Lisp 信息文件和 org mode 信息文件 而无需遍历回信息树的开头 要么我错过了一些明显的东西 要么我需要破解一些
  • 如何在 Clojure 中转换 Java 类?

    我想将 clojure Java 对象 用 let 分配 转换为另一个 Java 类类型 这可能吗 如果可以的话我该怎么做 更新 自从我发布这个问题以来 我意识到我不需要在 Clojure 中进行强制转换 因为它没有接口的概念 而且更像 R
  • 更改计划的开始日期以优化资源

    我有很多工作需要在特定的时间间隔执行 然而 我们每天完成这项工作的资源有限 因此 我正在尝试优化开始时间日期 开始时间日期只能向前移动 不能向后移动 以便每天使用的资源与我们的预算更加不相似 这些函数在下面的示例中使用 Function t
  • 用于稀疏矩阵的 Fortran 90/95 库?

    我正在寻找一个用于处理 Fortran 90 95 中稀疏矩阵的库 我只需要非常基本的运算 例如矩阵向量乘法 你建议我用什么 我搜索了一下 找到了 BLAS 的一个扩展 称为 稀疏 blas 记录在blast技术论坛规范的第 3 章中 ht
  • 如何使React表中的一列数据可点击?

    我正在使用 React Table React Bootstrap Table 2 在页面中显示表格并使用数据库 API 中的数据填充它 我想让其中一列中的值显示为链接 hrefs 此特定列仅包含 URL 我想要实现的是 如果我单击每行的
  • 如何衡量两个系列数据之间的相似性?

    我需要找到两个数据数组之间的相似性度量 您可以将相似性度量称为任何您想要的名称 差异 相关性或任何其他名称 例如 1 2 3 4 5 lt Series 1 2 3 4 5 6 lt Series 2 应该比这两个系列更相似 1 2 3 4
  • React Native Detox:无法接受系统警报弹出的位置权限

    使用以下命令从命令行启动应用程序detox test configuration ios sim debug 通过代码启动应用程序await device launchApp permissions location always noti
  • Rails: :inverse_of 和关联扩展

    我有以下设置 class Player lt ActiveRecord Base has many cards inverse of gt player do def in hand find all by location hand en
  • React Native:将变量设置为相同值时无限重新渲染[重复]

    这个问题在这里已经有答案了 我正在使用 React Native 功能组件 如下所示 export const Component1 gt const var1 setVar1 useState false setVar1 false re
  • 为什么 Go 中的函数不能命名为“init”?

    所以 今天在编码时我发现创建一个名为init产生错误method init not found 但是当我将其重命名为startup一切都很好 init 这个词是为 Go 中的某些内部操作而保留的 还是我在这里遗漏了一些东西 是的 该功能in
  • 如何修复:升级 Node 版本后出现“EPROTO”错误

    以下代码适用于 Node 的v10 15 3版本 const post require request post url https cidadao sinesp gov br sinesp cidadao mobile consultar