HTTPS
HTTPS — это протокол HTTP поверх TLS/SSL. В Node.js он реализован как отдельный модуль.
Класс: https.Agent
Объект Agent для HTTPS, аналогичный http.Agent. Подробнее см. https.request().
Класс: https.Server
Этот класс является подклассом tls.Server и излучает события, аналогичные http.Server. Подробнее см. http.Server.
server.setTimeout(msecs, callback)
server.timeout
См. http.Server#timeout.
https.createServer(options[, requestListener])
Возвращает новый объект веб-сервера HTTPS. options аналогичен tls.createServer(). requestListener — это функция, которая автоматически добавляется к событию 'request'.
Пример:
// curl -k https://localhost:8000/
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
Или
const https = require('https');
const fs = require('fs');
const options = {
pfx: fs.readFileSync('server.pfx')
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
server.close([callback])
Подробности см. в http.close().
server.listen(handle[, callback])
server.listen(path[, callback])
server.listen(port[, host][, backlog][, callback])
Подробности см. в http.listen().
https.get(options, callback)
Аналогично http.get(), но для HTTPS.
options может быть объектом или строкой. Если options является строкой, она автоматически анализируется с помощью url.parse().
Пример:
const https = require('https');
https.get('https://encrypted.google.com/', (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
process.stdout.write(d);
});
}).on('error', (e) => {
console.error(e);
});
https.globalAgent
Глобальный экземпляр https.Agent для всех запросов HTTPS-клиента.
https.request(options, callback)
Отправляет запрос на защищённый веб-сервер.
options может быть объектом или строкой. Если options является строкой, она автоматически анализируется с помощью url.parse().
Все параметры из http.request() допустимы.
Пример:
const https = require('https');
var options = {
hostname: 'encrypted.google.com',
port: 443,
path: '/',
method: 'GET'
};
var req = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
process.stdout.write(d);
});
});
req.on('error', (e) => {
console.error(e);
});
req.end();
В параметре options есть следующие параметры:
-
host: Имя домена или IP-адрес сервера, которому нужно отправить запрос. По умолчанию'localhost'. -
hostname: Псевдоним дляhost. Для поддержкиurl.parse()hostnameпредпочтительнее, чемhost. -
family: Семейство IP-адресов для использования при разрешенииhostиhostname. Допустимые значения —4или6. -
port: Порт удалённого сервера. По умолчанию 443. -
localAddress: Локальный интерфейс для привязки сетевых соединений. -
socketPath: Unix-доменная сокета (используйте либо host:port, либо socketPath). -
method: Строка, определяющая метод HTTP-запроса. По умолчанию'GET'. -
path: Путь запроса. По умолчанию'/'. Должен включать строку запроса, если она есть. Например,'/index.html?page=12'. При наличии недопустимых символов в пути запроса выбрасывается исключение. В настоящее время отклоняются только пробелы, но это может измениться в будущем. -
headers: Объект, содержащий заголовки запроса. -
auth: Аутентификация в формате Basic, т.е.'user:password'для вычисления заголовка Authorization. -
agent: Управляет поведениемAgent. При использовании Agent запрос по умолчанию будетConnection: keep-alive. Возможные значения:-
undefined(по умолчанию): использоватьglobalAgentдля этого хоста и порта. -
Agentобъект: явно использовать переданныйAgent. -
false: Отключает пулинг соединений с помощью Agent, запрос по умолчаниюConnection: close.
-
Также можно указать следующие параметры из tls.connect():
-
pfx: Сертификат, закрытый ключ и сертификаты CA для использования в SSL. Значение по умолчаниюnull. -
key: Закрытый ключ для использования в SSL. Значение по умолчаниюnull. -
passphrase: Строка пароля для закрытого ключа или pfx. Значение по умолчаниюnull. -
cert: Открытый x509-сертификат для использования. Значение по умолчаниюnull. -
ca: Строка,Bufferили массив строк илиBufferдоверенных сертификатов в формате PEM. Если это опущено, будут использоваться несколько известных "корневых" CA, например, VeriSign. Они используются для авторизации подключений. -
ciphers: Строка, описывающая используемые или исключаемые шифры. Подробности см. в <https://www.openssl.org/docs/man1.0.2/apps/ciphers.html#CIPHER-LIST-FORMAT -
rejectUnauthorized: Еслиtrue, сертификат сервера проверяется по списку предоставленных CA. Если проверка завершится неудачно, генерируется событие'error'. Проверка выполняется на уровне соединения, *до* отправки HTTP-запроса. По умолчаниюtrue. -
secureProtocol: Используемый метод SSL, например,SSLv3_methodдля принудительного использования версии SSL 3. Возможные значения зависят от вашей установки OpenSSL и определяются в константеSSL_METHODS. -
servername: Имя сервера для расширения TLS SNI (Server Name Indication).
Для указания этих параметров используйте пользовательский Agent.
Пример:
var options = {
hostname: 'encrypted.google.com',
port: 443,
path: '/',
method: 'GET',
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
options.agent = new https.Agent(options);
var req = https.request(options, (res) => {
...
}
В качестве альтернативы, отключите пулинг соединений, не используя Agent.
Пример:
var options = {
hostname: 'encrypted.google.com',
port: 443,
path: '/',
method: 'GET',
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem'),
agent: false
};
var req = https.request(options, (res) => {
...
}
© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v4.x/docs/api/https.html