【发布时间】:2021-11-26 00:34:31
【问题描述】:
我正在使用 Node.js 和 node-fetch 来检索 JSON。这段代码已经工作一年多了,好久没碰代码了,最近不工作了。
这是我的获取代码:
let response = await fetch('https://[mydomain]/api.php', {method: 'POST', headers: headers, body: body});
const data = await response.json();
我没有包含 body 和 header 对象,但它们是在我的 fetch 上方几行定义的。就像我提到的,这一切都在几天前才起作用。
这是我收到的错误:
rejected promise not handled within 1 second: FetchError: request to https://[mydomain]/api.php?reset failed, reason: certificate has expired
/Applications/Visual Studio Code.app/Contents/Resources/app/out/bootstrap-fork.js:5
stack trace: FetchError: request to https://[mydomain]/api.php?reset failed, reason: certificate has expired
该域具有有效的证书。我已经手动检查了它并使用了一些不同的工具来检查它。我正在使用 Open SSL,我更新了 SSL 以防万一。
Node.js 在 VS Code 扩展中运行,但我认为这无关。
知道为什么 Node.js 认为 SSL 已过期吗?或者有没有办法让我忽略这个警告?该扩展主要供我个人使用,API 位于我自己的个人服务器上。
【问题讨论】:
-
您是如何检查服务器上的证书的?这可能只是一个巧合,但昨天是 Let's Encrypt 提供的无数免费证书的到期日期(您需要获得新证书)。我建议再次检查服务器证书是否过期。
-
我只是使用了一些不同的 SSL 检查器,比如这个:sslshopper.com/ssl-checker.html
-
好吧,既然您没有说您的实际域是什么,我们无法帮助您诊断问题。似乎很明显,“某事”在某处已过期。我不会寻找解决警告的方法。你真的应该理解它为什么说它所说的并解决问题。要检查的一件事是您的服务器和客户端上的时钟,以确保没有日期偏离。
-
您使用的是什么节点和节点获取版本?我们在几天前弹出的一个应用程序中遇到了类似的问题。我们使用的是旧的节点版本并更新到更新的版本解决了它。
标签: node.js json ssl openssl fetch