2019年3月19日

使用 Node js Express 出現 unable to get local issuer certificate 問題解決。

近年來,資安的問題越來越被重視,而在使用 Node js Express 時,出現只要使用 https 去抓取遠端資料時,就會出現 unable to get local issuer certificate 的問題,一開始一直以為是甲方 Server 的問題,後來做一個簡單的範例時,




原始範例程式碼:紅字部分為要取得資料的url
var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app);
app.get('/', function(req, res) { //我們要處理URL為 "/" 的HTTP GET請求
   const url = "https://vod........................";
   const https = require('https');


   https.get(url, (response) => {
       console.log('statusCode:', res.statusCode);
       console.log('headers:', res.headers);
       response.setEncoding("utf8"); //需要加入這段,不然中文字會出現 16 進位編碼
       let body = "";
       response.on('data', (data) => {
           
           body += data;
       });


       response.on("end", () => {
           console.log('body:', body);
           res.send(body);
       });


   }).on('error', (e) => {
       console.error(e);
   });
});


server.listen(3000, '127.0.0.1', function() {
   console.log('HTTP伺服器在 http://127.0.0.1:3000/ 上運行');
});



發現原來是版本的問題,於是,我參考了以下網址




升級成 Express 4版本。


先移除Express 3
$ npm uninstall -g express


再安裝新的版本
$ npm install -g express-generator

重新啟動後,就可以正常使用了。

沒有留言:

張貼留言