近年來,資安的問題越來越被重視,而在使用 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
重新啟動後,就可以正常使用了。
沒有留言:
張貼留言