我试图使用URL从jira服务器下载一个文件,但我遇到了一个错误.

Error:

Error: unable to verify the first certificate in nodejs

at Error (native)
    at TLSSocket.<anonymous> (_tls_wrap.js:929:36)
   
  at TLSSocket.emit (events.js:104:17)

at TLSSocket._finishInit (_tls_wrap.js:460:8)

My Nodejs code:

var https = require("https");
var fs = require('fs');
var options = {
    host: 'jira.example.com',
    path: '/secure/attachment/206906/update.xlsx'
};

https.get(options, function (http_res) {
    
    var data = "";

  
    http_res.on("data", function (chunk) {
       
        data += chunk;
    });

   
    http_res.on("end", function () {
      
        var file = fs.createWriteStream("file.xlsx");
        data.pipe(file);
      
    });
});

推荐答案

try 添加适当的根证书

这永远是一个比盲目接受未经授权的终点更安全的选择,而未经授权的终点只能作为最后手段.

这可以简单地添加

require('https').globalAgent.options.ca = require('ssl-root-cas/latest').create();

你的申请.

关于这个问题,SSL Root CAs npm package(这里使用的)是一个非常有用的包.

Node.js相关问答推荐

try 运行迁移时的 Typeorm:缺少必需的参数:dataSource

wasm 代码提交分配失败 - 进程内存不足

Node Sass 还不支持你当前的环境:Windows 64-bit with Unsupported runtime (88)

“客户端网络套接字在建立安全 TLS 连接之前断开”,节点 10

适用于 Windows 7 的 NodeJS

`npm install` 在 node-gyp 重建时失败,并带有`gyp:未检测到 Xcode 或 CLT 版本!`

服务器发现和监控引擎已弃用

.js 和 .mjs 文件有什么区别?

从标准输入读取所有文本到字符串

try 将 DOMParser 与节点 js 一起使用

使用 nvm-windows 时更新 npm

Base64 Nodejs 中的读取文件

内部/模块/cjs/loader.js:582 抛出错误

Puppeteer - 向下滚动,直到你不能再

package.json 中的节点引擎 8.x 或 10.x

从另一个模块注入nestjs服务

create-react-app:如何使用特定浏览器“npm start”?

TypeError:winston.Logger 不是带有winston 和morgan 的构造函数

错误:EACCES:权限被拒绝,访问“/usr/local/lib/node_modules”

为什么不鼓励使用`.catch(err => console.error(err))`?