我正在尝试针对具有自签名证书的Web服务器在HTTPS上执行method = POST。 我下载了服务器公共证书并将路径放在post选项中。 但我在第47行收到错误[错误:DEPTH_ZERO_SELF_SIGNED_CERT]。 对于具有自签名证书的Web服务器,HTTPS上的method = GET正常工作。 我做错了什么?
var https = require('https');
var querystring = require('querystring');
var fs = require('fs');
console.log("Starting...");
var certFile = "self_signed_cert.pem"
function ssl_post() {
var username = "user";
var password = "password";
var post_data = '';
var basic = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
// An object of options to indicate where to post to
var post_options = {
host: 'someservername',
port: 443,
path: '/add',
method: 'POST',
headers: {
'accept': '*/*',
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length,
'Authorization': basic,
'ca': fs.readFileSync(certFile, 'utf8')
}
};
// Set up the request
var data = '';
var post_req = https.request(post_options, function(res) {
//res.setEncoding('utf8');
res.on('data', function(res) {
//res.setEncoding('utf8');
res.on('data', function(chunk) {
data += chunk;
});
res.on('end', function() {
console.log(data);
});
});
});
post_req.on('error', function(e) {
console.log(e);
});
// post the data
post_req.write(post_data);
post_req.end();
}
ssl_post();
console.log("Finished.");
答案 0 :(得分:0)
您已将ca
直接放入post_options
,但放入headers
部分。但是,ca
不应该用作HTTP标头,因此请将其直接放入post_options
。