如何在 node.js 的 https.get 调用中禁用证书缓存?
How to disable certificate caching in https.get call of node.js?
我有以下 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 会话。
您可以为您的请求禁用代理,这样会话就不会被缓存:
const url = require('url');
...
function test() {
let opts = url.parse('https://google.com');
opts.agent = false;
var request = https.get(opts, ...);
}
我有以下 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 会话。
您可以为您的请求禁用代理,这样会话就不会被缓存:
const url = require('url');
...
function test() {
let opts = url.parse('https://google.com');
opts.agent = false;
var request = https.get(opts, ...);
}