我有下面的node.js代码来获取证书和服务器的其他细节。但是它只在https.get的第一个调用中获得证书。连续调用不会从服务器获取证书。
var https = require('https');
var i = 0;
test();
function test() {
var request = https.get("https://google.com", function (result) {
console.log(result.statusCode)
var cert = result.connection.getPeerCertificate(true);
console.log("Certificate is", cert)
i++;
if (i < 10)
test();
}).on('error', function (err) {
console.log("error is", err);
})
}所以我觉得Node.js会缓存接收到的服务器证书。
如果是这样的话,那么如何清除内存中的证书。
如果没有,那么这个问题的原因是什么?
发布于 2017-05-11 11:14:52
默认的https.Agent缓存(最多)100个TLS会话。
您可以禁用请求的代理,因此不会缓存会话:
const url = require('url');
...
function test() {
let opts = url.parse('https://google.com');
opts.agent = false;
var request = https.get(opts, ...);
}https://stackoverflow.com/questions/43911181
复制相似问题