mirror of
https://github.com/nodejs/node.git
synced 2026-11-09 15:11:11 -05:00
Each page of the API documentation should have links to other versions of the same page. This will make it easier to switch between the current "live" release at nodejs.org and LTS versions. PR-URL: https://github.com/nodejs/node/pull/10958 Fixes: https://github.com/nodejs/node/issues/10726 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Evan Lucas <evanlucas@me.com> Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
279 lines
6.7 KiB
Markdown
279 lines
6.7 KiB
Markdown
# HTTPS
|
|
|
|
<!--introduced_in=v0.10.0-->
|
|
|
|
> Stability: 2 - Stable
|
|
|
|
HTTPS is the HTTP protocol over TLS/SSL. In Node.js this is implemented as a
|
|
separate module.
|
|
|
|
## Class: https.Agent
|
|
<!-- YAML
|
|
added: v0.4.5
|
|
-->
|
|
|
|
An Agent object for HTTPS similar to [`http.Agent`][]. See [`https.request()`][]
|
|
for more information.
|
|
|
|
## Class: https.Server
|
|
<!-- YAML
|
|
added: v0.3.4
|
|
-->
|
|
|
|
This class is a subclass of `tls.Server` and emits events same as
|
|
[`http.Server`][]. See [`http.Server`][] for more information.
|
|
|
|
### server.setTimeout([msecs][, callback])
|
|
<!-- YAML
|
|
added: v0.11.2
|
|
-->
|
|
- `msecs` {number} Defaults to 120000 (2 minutes).
|
|
- `callback` {Function}
|
|
|
|
See [`http.Server#setTimeout()`][].
|
|
|
|
### server.timeout
|
|
<!-- YAML
|
|
added: v0.11.2
|
|
-->
|
|
- {number} Defaults to 120000 (2 minutes).
|
|
|
|
See [`http.Server#timeout`][].
|
|
|
|
### server.keepAliveTimeout
|
|
<!-- YAML
|
|
added: v8.0.0
|
|
-->
|
|
- {number} Defaults to 5000 (5 seconds).
|
|
|
|
See [`http.Server#keepAliveTimeout`][].
|
|
|
|
## https.createServer([options][, requestListener])
|
|
<!-- YAML
|
|
added: v0.3.4
|
|
-->
|
|
- `options` {Object} Accepts `options` from [`tls.createServer()`][] and [`tls.createSecureContext()`][].
|
|
- `requestListener` {Function} A listener to be added to the `request` event.
|
|
|
|
Example:
|
|
|
|
```js
|
|
// 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);
|
|
```
|
|
|
|
Or
|
|
|
|
```js
|
|
const https = require('https');
|
|
const fs = require('fs');
|
|
|
|
const options = {
|
|
pfx: fs.readFileSync('test/fixtures/test_cert.pfx'),
|
|
passphrase: 'sample'
|
|
};
|
|
|
|
https.createServer(options, (req, res) => {
|
|
res.writeHead(200);
|
|
res.end('hello world\n');
|
|
}).listen(8000);
|
|
```
|
|
|
|
### server.close([callback])
|
|
<!-- YAML
|
|
added: v0.1.90
|
|
-->
|
|
- `callback` {Function}
|
|
|
|
See [`http.close()`][] for details.
|
|
|
|
### server.listen(handle[, callback])
|
|
- `handle` {Object}
|
|
- `callback` {Function}
|
|
|
|
### server.listen(path[, callback])
|
|
- `path` {string}
|
|
- `callback` {Function}
|
|
|
|
### server.listen([port][, host][, backlog][, callback])
|
|
- `port` {number}
|
|
- `hostname` {string}
|
|
- `backlog` {number}
|
|
- `callback` {Function}
|
|
|
|
See [`http.listen()`][] for details.
|
|
|
|
## https.get(options[, callback])
|
|
<!-- YAML
|
|
added: v0.3.6
|
|
changes:
|
|
- version: v7.5.0
|
|
pr-url: https://github.com/nodejs/node/pull/10638
|
|
description: The `options` parameter can be a WHATWG `URL` object.
|
|
-->
|
|
- `options` {Object | string | URL} Accepts the same `options` as
|
|
[`https.request()`][], with the `method` always set to `GET`.
|
|
- `callback` {Function}
|
|
|
|
Like [`http.get()`][] but for HTTPS.
|
|
|
|
`options` can be an object, a string, or a [`URL`][] object. If `options` is a
|
|
string, it is automatically parsed with [`url.parse()`][]. If it is a [`URL`][]
|
|
object, it will be automatically converted to an ordinary `options` object.
|
|
|
|
Example:
|
|
|
|
```js
|
|
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
|
|
<!-- YAML
|
|
added: v0.5.9
|
|
-->
|
|
|
|
Global instance of [`https.Agent`][] for all HTTPS client requests.
|
|
|
|
## https.request(options[, callback])
|
|
<!-- YAML
|
|
added: v0.3.6
|
|
changes:
|
|
- version: v7.5.0
|
|
pr-url: https://github.com/nodejs/node/pull/10638
|
|
description: The `options` parameter can be a WHATWG `URL` object.
|
|
-->
|
|
- `options` {Object | string | URL} Accepts all `options` from [`http.request()`][],
|
|
with some differences in default values:
|
|
- `protocol` Defaults to `https:`
|
|
- `port` Defaults to `443`.
|
|
- `agent` Defaults to `https.globalAgent`.
|
|
- `callback` {Function}
|
|
|
|
|
|
Makes a request to a secure web server.
|
|
|
|
The following additional `options` from [`tls.connect()`][] are also accepted when using a
|
|
custom [`Agent`][]:
|
|
`pfx`, `key`, `passphrase`, `cert`, `ca`, `ciphers`, `rejectUnauthorized`, `secureProtocol`, `servername`
|
|
|
|
`options` can be an object, a string, or a [`URL`][] object. If `options` is a
|
|
string, it is automatically parsed with [`url.parse()`][]. If it is a [`URL`][]
|
|
object, it will be automatically converted to an ordinary `options` object.
|
|
|
|
Example:
|
|
|
|
```js
|
|
const https = require('https');
|
|
|
|
const options = {
|
|
hostname: 'encrypted.google.com',
|
|
port: 443,
|
|
path: '/',
|
|
method: 'GET'
|
|
};
|
|
|
|
const 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();
|
|
```
|
|
Example using options from [`tls.connect()`][]:
|
|
|
|
```js
|
|
const 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);
|
|
|
|
const req = https.request(options, (res) => {
|
|
// ...
|
|
});
|
|
```
|
|
|
|
Alternatively, opt out of connection pooling by not using an `Agent`.
|
|
|
|
Example:
|
|
|
|
```js
|
|
const 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
|
|
};
|
|
|
|
const req = https.request(options, (res) => {
|
|
// ...
|
|
});
|
|
```
|
|
|
|
Example using a [`URL`][] as `options`:
|
|
|
|
```js
|
|
const { URL } = require('url');
|
|
|
|
const options = new URL('https://abc:xyz@example.com');
|
|
|
|
const req = https.request(options, (res) => {
|
|
// ...
|
|
});
|
|
```
|
|
|
|
[`Agent`]: #https_class_https_agent
|
|
[`URL`]: url.html#url_the_whatwg_url_api
|
|
[`http.Agent`]: http.html#http_class_http_agent
|
|
[`http.Server#keepAliveTimeout`]: http.html#http_server_keepalivetimeout
|
|
[`http.Server#setTimeout()`]: http.html#http_server_settimeout_msecs_callback
|
|
[`http.Server#timeout`]: http.html#http_server_timeout
|
|
[`http.Server`]: http.html#http_class_http_server
|
|
[`http.close()`]: http.html#http_server_close_callback
|
|
[`http.get()`]: http.html#http_http_get_options_callback
|
|
[`http.listen()`]: http.html#http_server_listen_port_hostname_backlog_callback
|
|
[`http.request()`]: http.html#http_http_request_options_callback
|
|
[`https.Agent`]: #https_class_https_agent
|
|
[`https.request()`]: #https_https_request_options_callback
|
|
[`tls.connect()`]: tls.html#tls_tls_connect_options_callback
|
|
[`tls.createSecureContext()`]: tls.html#tls_tls_createsecurecontext_options
|
|
[`tls.createServer()`]: tls.html#tls_tls_createserver_options_secureconnectionlistener
|
|
[`url.parse()`]: url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost
|