我正在尝试获取URL的SSL详细信息,并且在请求多个唯一主机时有效。
然而,当请求同一主机时,由于某种原因,只有第一个请求的证书返回,而没有返回其他证书。
感觉就像有一个缓存/会话保持SSL握手并且不执行。
下面是复制它的代码:
var request = require('request')
var r = request({
url: 'https://google.com/',
method: 'HEAD',
gzip: true,
followRedirect: false,
followAllRedirects: false
});
r.on('response', function(res) {
certDetails = (res.req.connection.getPeerCertificate())
console.log('*********1st Request**********');
console.log(certDetails);
})
setTimeout (function() {
var r = request({
url: 'https://google.com/',
method: 'HEAD',
gzip: true,
followRedirect: false,
followAllRedirects: false
});
r.on('response', function(res) {
certDetails = (res.req.connection.getPeerCertificate()) // works
console.log('*********2nd Request**********');
console.log(certDetails);
})
}, 5000)
第二个请求在 5 秒后发送到同一主机,并且无法获取证书详细信息。
但是,如果我们将第一个主机保留为 google.com,将第二个主机保留为 yahoo.com,则两者都会被检索(因为它们是唯一的并且可能没有缓存(。
好的,找到了答案。
请求可以通过以下方式发送:
agent: new Agent({
maxCachedSessions: 0
}),
这样它们就不会被缓存。