Node.js HTTPS

  • Int8

HTTPS

稳定性: 3 - 稳定

HTTPS是什么?HTTPS是基于TLS/SSL的HTTP协议,在Node.js里它可以作为单独的模块来实现。在本文中,你将了解HTTPS的使用方法。

类: https.Server

https.Server是tls.Server的子类,并且和http.Server一样触发事件。更多信息参见http.Server

server.setTimeout(msecs, callback)

详情参见http.Server#setTimeout().

server.timeout

详情参见http.Server#timeout.

https.createServer(options, requestListener)

返回一个新的HTTPS服务器对象。其中options类似于 tls.createServer()。 requestListener函数自动加到'request'事件里。

例如:

// curl -k https://localhost:8000/ var https = require('https' var fs = require('fs' var options = { key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem') }; https.createServer(options, function (req, res) { res.writeHead(200 res.end("hello world\n" }).listen(8000

或:

var https = require('https' var fs = require('fs' var options = { pfx: fs.readFileSync('server.pfx') }; https.createServer(options, function (req, res) { res.writeHead(200 res.end("hello world\n" }).listen(8000

server.listen(port, host, callback)

server.listen(path, callback)

server.listen(handle, callback)

详情参见http.listen()。

server.close(callback)

详情参见http.close()。

https.request(options, callback)

可以给安全web服务器发送请求。

options可以是一个对象或字符串。如果options是字符串,则会被url.parse()解析。

所有来自http.request()选项都是经过验证的。

例如:

var https = require('https' var options = { hostname: 'encrypted.google.com', port: 443, path: '/', method: 'GET' }; var req = https.request(options, function(res) { console.log("statusCode: ", res.statusCode console.log("headers: ", res.headers res.on('data', function(d) { process.stdout.write(d } } req.end( req.on('error', function(e) { console.error(e }

option参数具有以下的值:

  • host: 请求的服务器域名或IP地址,默认:'localhost'

tls.connect()的参数也能指定。但是,globalAgent会忽略他们。

  • pfx: SSL使用的证书,私钥,和证书Certificate,默认为null.

要指定这些选项,使用一个自定义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, function(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, function(res) { ... }

https.get(options, callback)

http.get()类似,不过是HTTPS版本的.

options可以是字符串对象. 如果options是字符串, 会自动使用url.parse()解析。

例如:

var https = require('https' https.get('https://encrypted.google.com/', function(res) { console.log("statusCode: ", res.statusCode console.log("headers: ", res.headers res.on('data', function(d) { process.stdout.write(d } }).on('error', function(e) { console.error(e }

类: https.Agent

HTTPS的Agent对象,和http.Agent类似。详情参见https.request()。

https.globalAgent

所有HTTPS客户端请求的https.Agent全局实例。