顯示具有 https 標籤的文章。 顯示所有文章
顯示具有 https 標籤的文章。 顯示所有文章

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

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