mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
* **Async Hooks**
* The `async_hooks` module has landed in core
[[`4a7233c178`](https://github.com/nodejs/node/commit/4a7233c178)]
[#12892](https://github.com/nodejs/node/pull/12892).
* **Buffer**
* Using the `--pending-deprecation` flag will cause Node.js to emit a
deprecation warning when using `new Buffer(num)` or `Buffer(num)`.
[[`d2d32ea5a2`](https://github.com/nodejs/node/commit/d2d32ea5a2)]
[#11968](https://github.com/nodejs/node/pull/11968).
* `new Buffer(num)` and `Buffer(num)` will zero-fill new `Buffer` instances
[[`7eb1b4658e`](https://github.com/nodejs/node/commit/7eb1b4658e)]
[#12141](https://github.com/nodejs/node/pull/12141).
* Many `Buffer` methods now accept `Uint8Array` as input
[[`beca3244e2`](https://github.com/nodejs/node/commit/beca3244e2)]
[#10236](https://github.com/nodejs/node/pull/10236).
* **Child Process**
* Argument and kill signal validations have been improved
[[`97a77288ce`](https://github.com/nodejs/node/commit/97a77288ce)]
[#12348](https://github.com/nodejs/node/pull/12348),
[[`d75fdd96aa`](https://github.com/nodejs/node/commit/d75fdd96aa)]
[#10423](https://github.com/nodejs/node/pull/10423).
* Child Process methods accept `Uint8Array` as input
[[`627ecee9ed`](https://github.com/nodejs/node/commit/627ecee9ed)]
[#10653](https://github.com/nodejs/node/pull/10653).
* **Console**
* Error events emitted when using `console` methods are now supressed.
[[`f18e08d820`](https://github.com/nodejs/node/commit/f18e08d820)]
[#9744](https://github.com/nodejs/node/pull/9744).
* **Dependencies**
* The npm client has been updated to 5.0.0
[[`3c3b36af0f`](https://github.com/nodejs/node/commit/3c3b36af0f)]
[#12936](https://github.com/nodejs/node/pull/12936).
* V8 has been updated to 5.8 with forward ABI stability to 6.0
[[`60d1aac8d2`](https://github.com/nodejs/node/commit/60d1aac8d2)]
[#12784](https://github.com/nodejs/node/pull/12784).
* **Domains**
* Native `Promise` instances are now `Domain` aware
[[`84dabe8373`](https://github.com/nodejs/node/commit/84dabe8373)]
[#12489](https://github.com/nodejs/node/pull/12489).
* **Errors**
* We have started assigning static error codes to errors generated by Node.js.
This has been done through multiple commits and is still a work in
progress.
* **File System**
* The utility class `fs.SyncWriteStream` has been deprecated
[[`7a55e34ef4`](https://github.com/nodejs/node/commit/7a55e34ef4)]
[#10467](https://github.com/nodejs/node/pull/10467).
* The deprecated `fs.read()` string interface has been removed
[[`3c2a9361ff`](https://github.com/nodejs/node/commit/3c2a9361ff)]
[#9683](https://github.com/nodejs/node/pull/9683).
* **HTTP**
* Improved support for userland implemented Agents
[[`90403dd1d0`](https://github.com/nodejs/node/commit/90403dd1d0)]
[#11567](https://github.com/nodejs/node/pull/11567).
* Outgoing Cookie headers are concatenated into a single string
[[`d3480776c7`](https://github.com/nodejs/node/commit/d3480776c7)]
[#11259](https://github.com/nodejs/node/pull/11259).
* The `httpResponse.writeHeader()` method has been deprecated
[[`fb71ba4921`](https://github.com/nodejs/node/commit/fb71ba4921)]
[#11355](https://github.com/nodejs/node/pull/11355).
* New methods for accessing HTTP headers have been added to `OutgoingMessage`
[[`3e6f1032a4`](https://github.com/nodejs/node/commit/3e6f1032a4)]
[#10805](https://github.com/nodejs/node/pull/10805).
* **Lib**
* All deprecation messages have been assigned static identifiers
[[`5de3cf099c`](https://github.com/nodejs/node/commit/5de3cf099c)]
[#10116](https://github.com/nodejs/node/pull/10116).
* The legacy `linkedlist` module has been removed
[[`84a23391f6`](https://github.com/nodejs/node/commit/84a23391f6)]
[#12113](https://github.com/nodejs/node/pull/12113).
* **N-API**
* Experimental support for the new N-API API has been added
[[`56e881d0b0`](https://github.com/nodejs/node/commit/56e881d0b0)]
[#11975](https://github.com/nodejs/node/pull/11975).
* **Process**
* Process warning output can be redirected to a file using the
`--redirect-warnings` command-line argument
[[`03e89b3ff2`](https://github.com/nodejs/node/commit/03e89b3ff2)]
[#10116](https://github.com/nodejs/node/pull/10116).
* Process warnings may now include additional detail
[[`dd20e68b0f`](https://github.com/nodejs/node/commit/dd20e68b0f)]
[#12725](https://github.com/nodejs/node/pull/12725).
* **REPL**
* REPL magic mode has been deprecated
[[`3f27f02da0`](https://github.com/nodejs/node/commit/3f27f02da0)]
[#11599](https://github.com/nodejs/node/pull/11599).
* **Src**
* `NODE_MODULE_VERSION` has been updated to 57
(https://github.com/nodejs/node/commit/ec7cbaf266)]
[#12995](https://github.com/nodejs/node/pull/12995).
* Add `--pending-deprecation` command-line argument and
`NODE_PENDING_DEPRECATION` environment variable
[[`a16b570f8c`](https://github.com/nodejs/node/commit/a16b570f8c)]
[#11968](https://github.com/nodejs/node/pull/11968).
* The `--debug` command-line argument has been deprecated. Note that
using `--debug` will enable the *new* Inspector-based debug protocol
as the legacy Debugger protocol previously used by Node.js has been
removed. [[`010f864426`](https://github.com/nodejs/node/commit/010f864426)]
[#12949](https://github.com/nodejs/node/pull/12949).
* Throw when the `-c` and `-e` command-line arguments are used at the same
time [[`a5f91ab230`](https://github.com/nodejs/node/commit/a5f91ab230)]
[#11689](https://github.com/nodejs/node/pull/11689).
* Throw when the `--use-bundled-ca` and `--use-openssl-ca` command-line
arguments are used at the same time.
[[`8a7db9d4b5`](https://github.com/nodejs/node/commit/8a7db9d4b5)]
[#12087](https://github.com/nodejs/node/pull/12087).
* **Stream**
* `Stream` now supports `destroy()` and `_destroy()` APIs
[[`b6e1d22fa6`](https://github.com/nodejs/node/commit/b6e1d22fa6)]
[#12925](https://github.com/nodejs/node/pull/12925).
* `Stream` now supports the `_final()` API
[[`07c7f198db`](https://github.com/nodejs/node/commit/07c7f198db)]
[#12828](https://github.com/nodejs/node/pull/12828).
* **TLS**
* The `rejectUnauthorized` option now defaults to `true`
[[`348cc80a3c`](https://github.com/nodejs/node/commit/348cc80a3c)]
[#5923](https://github.com/nodejs/node/pull/5923).
* The `tls.createSecurePair()` API now emits a runtime deprecation
[[`a2ae08999b`](https://github.com/nodejs/node/commit/a2ae08999b)]
[#11349](https://github.com/nodejs/node/pull/11349).
* A runtime deprecation will now be emitted when `dhparam` is less than
2048 bits [[`d523eb9c40`](https://github.com/nodejs/node/commit/d523eb9c40)]
[#11447](https://github.com/nodejs/node/pull/11447).
* **URL**
* The WHATWG URL implementation is now a fully-supported Node.js API
[[`d080ead0f9`](https://github.com/nodejs/node/commit/d080ead0f9)]
[#12710](https://github.com/nodejs/node/pull/12710).
* **Util**
* `Symbol` keys are now displayed by default when using `util.inspect()`
[[`5bfd13b81e`](https://github.com/nodejs/node/commit/5bfd13b81e)]
[#9726](https://github.com/nodejs/node/pull/9726).
* `toJSON` errors will be thrown when formatting `%j`
[[`455e6f1dd8`](https://github.com/nodejs/node/commit/455e6f1dd8)]
[#11708](https://github.com/nodejs/node/pull/11708).
* Convert `inspect.styles` and `inspect.colors` to prototype-less objects
[[`aab0d202f8`](https://github.com/nodejs/node/commit/aab0d202f8)]
[#11624](https://github.com/nodejs/node/pull/11624).
* The new `util.promisify()` API has been added
[[`99da8e8e02`](https://github.com/nodejs/node/commit/99da8e8e02)]
[#12442](https://github.com/nodejs/node/pull/12442).
* **Zlib**
* Support `Uint8Array` in Zlib convenience methods
[[`91383e47fd`](https://github.com/nodejs/node/commit/91383e47fd)]
[#12001](https://github.com/nodejs/node/pull/12001).
* Zlib errors now use `RangeError` and `TypeError` consistently
[[`b514bd231e`](https://github.com/nodejs/node/commit/b514bd231e)]
[#11391](https://github.com/nodejs/node/pull/11391).
254 lines
5.8 KiB
Markdown
254 lines
5.8 KiB
Markdown
# HTTPS
|
|
|
|
> 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
|
|
-->
|
|
- `options` {Object | string} 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 or a string. If `options` is a string, it is
|
|
automatically parsed with [`url.parse()`][].
|
|
|
|
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
|
|
-->
|
|
- `options` {Object | string} 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 or a string. If `options` is a string, it is
|
|
automatically parsed with [`url.parse()`][].
|
|
|
|
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) => {
|
|
// ...
|
|
});
|
|
```
|
|
|
|
[`Agent`]: #https_class_https_agent
|
|
[`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
|