请求错误:无法验证第一个证书

7

我想使用request模块来发送简单的POST HTTP请求:

var request = require("request");
var form = {form: {some: "form", attributes: "attrs"}}
request.post("https://example.com", form)
   .on('response', function(response) {

   if (response.statusCode === 200) {
     console.log("DONE");
   } else {
     console.log("FAIL");
   }
});

当我运行这段代码时,它会抛出以下错误信息:
Error: unable to verify the first certificate
at Error (native)
at TLSSocket.<anonymous> (_tls_wrap.js:1057:38)
at emitNone (events.js:67:13)
at TLSSocket.emit (events.js:166:7)
at TLSSocket._finishInit (_tls_wrap.js:596:8)

我认为这是因为url使用了https,但我不知道如何修复此错误。

如何禁用证书检查?


2
可能是Error: unable to verify the first certificate in nodejs的重复问题。 - CodingDefined
2个回答

6

将选项"rejectUnauthorized": false添加:

request.post({url: "https://example.com", "rejectUnauthorized": false}, form)
   .on('response', function(response) {

   if (response.statusCode === 200) {
     console.log("DONE");
   } else {
     console.log("FAIL");
   }
});

或者通过https://www.npmjs.com/package/ssl-root-cas添加适当的证书。

require('ssl-root-cas').inject();

当我使用你的代码时,它会抛出 Error: Invalid URI "/" 错误消息。 - Mr.D
尝试使用 request.post({uri: "https://example.com", rejectUnauthorized: false},但它应该是相同的。 - michelem
1
我按照你的要求进行了更改,但仍然抛出“错误:无效的URI“/””错误。 - Mr.D
10
禁用证书验证潜在危险,绝对不是好的解决方案,最多只是权宜之计,而且在大多数情况下是一种严重的安全漏洞。 - 0x1gene

0
您可以尝试在“文件->设置”中禁用SSL证书验证 设置图片

使用Node.js?文件菜单? - Martijn Scheffer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接