javascript - 如何在 https.get 调用 node.js 时禁用证书缓存?

标签 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 会缓存收到的服务器证书。

如果是这样,那么我该如何清除内存中存在的证书。

如果不是,那么出现这个问题的原因是什么?

最佳答案

默认https.Agent缓存(最多)100 个 TLS session 。

您可以为您的请求禁用代理,这样 session 就不会被缓存:

const url = require('url');
...
function test() {
  let opts   = url.parse('https://google.com');
  opts.agent = false;

  var request = https.get(opts, ...);
}

关于javascript - 如何在 https.get 调用 node.js 时禁用证书缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43911181/

相关文章:

javascript - AngularJS - 通过 ID 从关联的 Controller 访问 View 元素

xml - 如何在node.js中将数据写入xml文件

javascript - Node.js 中的 module.exports 与导出

java - jdbc Postgres 驱动程序中的 `ssl` 和 `useSSL` 有什么区别?

java - 如何从代码动态地为 Java RMI 设置 SSL?

javascript - 使用 webkit 过滤器 javascript 调用滚动函数时停止延迟

javascript - 使用 JS/jQuery 在前端对 HTML div 进行排序

javascript - 什么函数在 jQuery 中充当 .SelectMany()?

node.js - 快速 session 保存多长时间?

java - 加载 keystore 文件,找不到别名