如何在node.js的https.get调用中禁用证书缓存?

时间:2017-05-11 09:12:11

标签: javascript node.js ssl https ssl-certificate

我有以下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会缓存收到的服务器证书。

如果是这种情况,那么我该如何清除内存中的证书。

如果没有,那么这个问题的原因是什么?

1 个答案:

答案 0 :(得分:4)

默认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, ...);
}