Установите заголовок host
для запроса:
const https = require('https');
https.get('https://AA.BB.CC.DD', {
headers : { host : 'api.example.com' }
}, res => {
console.log('okay');
}).on('error', e => {
console.log('E', e.message);
});
РЕДАКТИРОВАТЬ : Я немного покопался, чтобы посмотреть, как это работает точно.Чтобы разрешить виртуальный хостинг на основе HTTPS, есть расширение TLS под названием SNI (индикация имени сервера) .Это расширение используется клиентом для указания имени хоста, к которому он пытается подключиться, поэтому сервер может выбрать соответствующий сертификат, принадлежащий этому имени хоста.
Модуль tls
узла, который используется https
, имеет опцию servername
для установки этого имени хоста:
https.get('https://AA.BB.CC.DD', {
servername : api.example.com'
}, ...)
Однако вам все равно нужно также передать заголовок Host
(это часть обычного протокола HTTP):
https.get('https://AA.BB.CC.DD', {
headers : { host : 'api.example.com' },
servername : 'api.example.com'
}, ...)
Для сохранения СУХОГО, Node.js установит servername
в заголовок Host
, если только для него не установлено другое значение ( здесь ).