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全局实例。