我正在創建一個連接到Proxmox 2.1的REST api的NodeJS服務。NodeJS https客戶端錯誤 - 400
我的腳本:
// module dependencies
var http = require('http'),
url = require('url'),
https = require('https'),
querystring = require('querystring'),
fs = require('fs');
exports.urlReq = function(reqUrl, options, cb){
if(typeof options === "function"){ cb = options; options = {}; }// incase no options passed in
// parse url to chunks
reqUrl = url.parse(reqUrl);
// http.request settings
var settings = {
host: reqUrl.hostname,
port: reqUrl.port || 80,
path: reqUrl.pathname,
headers: options.headers || {},
method: options.method || 'GET',
requestCert: false
};
// if there are params:
if(options.params){
options.params = querystring.stringify(options.params);
settings.headers['Content-Length'] = options.params.length;
};
// MAKE THE REQUEST
var req = https.request(settings);
req.on('error', function(err) {
console.log(err);
});
// when the response comes back
req.on('response', function(res){
res.body = '';
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
res.setEncoding('utf-8');
// concat chunks
res.on('data', function(chunk){ res.body += chunk });
res.on('error', function(err){
throw err;
})
// when the response has finished
res.on('end', function(){
// fire callback
cb(res.body, res);
});
});
// if there are params: write them to the request
if(options.params){ req.write(options.params) };
// end the request
req.end();
}
該腳本GET請求,雖然這樣做POST請求時,它死。它不會拋出任何錯誤,它只是默默地失敗。
當控制檯登錄響應,這裏是res.connection對象:
connection:
{ pair: [Object],
writable: true,
readable: true,
_paused: false,
_needDrain: false,
_pending: [],
_pendingCallbacks: [],
_pendingBytes: 0,
socket: [Object],
encrypted: [Object],
authorized: false,
_controlReleased: true,
_events: [Object],
_pool: <Buffer 48 54 54 50 2f 31 2e 31 20 34 30 30 20 50 61 72 61 6d 65 74 65 72 20 76 65 72 69 66 69 63 61 74 69 6f 6e 20 66 61 69 6c 65 64 20 2d 20 64 75 70 6c 69 63 ...>,
_poolStart: 332,
_poolEnd: 65536,
parser: [Object],
_httpMessage: [Circular],
ondata: [Function: socketOnData],
onend: [Function: socketOnEnd],
npnProtocol: undefined,
authorizationError: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' },
服務器使用自簽名證書的SSL。
任何幫助將不勝感激,
謝謝!
這樣做和使用普通的未加密的HTTP幾乎相同。請注意,通過遵循此建議,您正在創建安全漏洞。 https://security.stackexchange.com/search?q=self+signed+certificates –