我正在使用Mikeal的请求(https://github.com/mikeal/request)向服务器发出https请求。但是,我一直收到CERT_HAS_EXPIRED的授权错误。
request({
url: 'https://www.domain.com/api/endpoint',
strictSSL: false
}, function(error, response, body) {
if(!error && response.statusCode == 200) {
res.json(JSON.parse(body));
} else {
res.json(response.statusCode, {'error': 'error'})
}
});
我已经尝试将严格SSL设置为true和false,两者输出相同的CERT_HAS_EXPIRED错误。是什么导致了这个问题,有没有办法在nodejs中修复它?
如果今天有人在使用旧版本的nodejs时出现此问题,这可能是因为让我们加密2021 9月30日根CA到期,这在回答中已经提到。
证书在节点源代码中硬编码,新的ISRG Root X1证书仅在此提交中添加。
可以更新他们的节点版本,使用node--use-openssl-ca
标志(假设openssl证书是最新的),使用其他答案中提到的超文本传输协议代理解决方案(我没有测试它),或者设置process.env.NODE_TLS_REJECT_UNAUTHORIZED=0
作为快速而肮脏的解决方法。
在文件顶部添加以下内容:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
危险这会在整个节点上禁用HTTPS/SSL/TLS检查。js环境。请参阅下面使用https代理的解决方案。
续订证书。这可以使用Greenlock免费完成,Greenlock通过Let’s颁发证书
'use strict';
var request = require('request');
var agentOptions;
var agent;
agentOptions = {
host: 'www.example.com'
, port: '443'
, path: '/'
, rejectUnauthorized: false
};
agent = new https.Agent(agentOptions);
request({
url: "https://www.example.com/api/endpoint"
, method: 'GET'
, agent: agent
}, function (err, resp, body) {
// ...
});
通过将代理与rejectUnauthorized一起使用,您至少可以将安全漏洞限制在处理该站点的请求上,而不是使整个节点进程完全不安全。
如果您使用自签名证书,您将添加此选项:
agentOptions.ca = [ selfSignedRootCaPemCrtBuffer ];
对于受信任的对等连接,您还可以添加以下两个选项:
agentOptions.key = clientPemKeyBuffer;
agentOptions.cert = clientPemCrtSignedBySelfSignedRootCaBuffer;
不幸的是,这个过程。环境。NODE\u TLS\u REJECT\u UNAUTHORIZED=“0” 甚至有文档记录。它应该只用于调试,而不应该使其成为在野外运行的某种代码。几乎每个在https上运行的库都有一种传递代理选项的方法。那些不需要的应该被修复。
我正在尝试在后端节点中发出http请求。js web app。我可以在前端web javascript文件上发出成功的完整http请求,如下所示: 并遵循本指南:https://nodejs.dev/learn/make-an-http-post-request-using-nodejs 我一直试图在node中发出相同的请求。js后端: 但运行上述请求会导致以下错误: 我设置url/path设置的
我正在用nodejs和MongoDB创建我的第一个API,我想创建一个类似“localhost:3050/user/name”的GET请求。所以我建立了这个: ...
问题内容: 尝试运行Discord机器人时,遇到此错误: 它刚刚开始无处不在,并且每次都在发生。 我在Windows 10上使用python 3.8 这是什么意思,我该如何解决? 问题答案: 要解决此问题: 使用Internet Explorer转到discord.com(以管理员身份运行) 点击右上角的锁 点击查看证书 安装一个 PS:如果您的防病毒软件对Web浏览器有效,并且此解决方案不起作用
我在循环中的节点JS中发送这样的GET请求 由于响应是异步的,是否可以在响应中获取原始请求URL? 谢谢!
然而,我不认为这会影响我,因为我的开发机器是最新的。 但是从今天开始,我在执行时得到消息 我只是下载了最新的windows git(2.33.0),并确认了openssl中的构建是最新的,这应该很好 问题不在于颁发的证书本身,它没有过期,也没有被chrome(windows证书存储)和Firefox接受。 欢迎提出任何建议。
问题内容: 我正在使用出色的Request库在Node中下载我正在使用的小型命令行工具中的文件。Request非常适合拉入单个文件,完全没有问题,但不适用于ZIP。 例如,我正在尝试下载URL上的Twitter Bootstrap 存档: 该代码的相关部分是: 我也尝试将编码设置为“二进制”,但没有运气。实际的zip约为74KB,但是通过上述代码下载时约为134KB,并在Finder中双击以提取它