As stated in the documentation for https.request
:
The following additional
options
fromtls.connect()
are also accepted when using a customAgent
:ca
,cert
,ciphers
,clientCertEngine
,key
,passphrase
,pfx
,rejectUnauthorized
,secureProtocol
,servername
.
This module allows to modify other options, as well as to disable them. For example, SNI can be disabled by setting servername
to null
(or undefined
).
$ npm i agent-options
makeAgent(agentOptions)
returnshttps.Agent
created with givenagentOptions
and ensures that thoseagentOptions
are used fortls.connect
as well (in a sense ofObject.assign
).makeAgent(agentOptions, connectOptions)
usesagentOptions
forhttps.Agent
(as is) andconnectOptions
fortls.connect
(again, withObject.assign
).
Performing https.request
without SNI:
const https = require('https')
const makeAgent = require('agent-options')
const options = {
host: 'example.com',
port: 443,
path: '/',
agent: makeAgent({ servername: null })
}
const req = https.request(options, res => {
res.on('data', data => {
// ...
})
res.on('end', () => {
// ...
})
})
req.on('error', err => {
// ...
})
req.end()
Same using got:
const got = require('got')
const makeAgent = require('agent-options')
got('example.com', { agent: makeAgent({ servername: null }) }).then(res => {
// ...
}).catch(err => {
// ...
})
- Support agents other than
https.Agent
?