IO.js HTTPS

2018-11-28 22:34 更新

穩(wěn)定度: 2 - 穩(wěn)定

HTTPS是建立在TLS/SSL之上的HTTP協(xié)議。在io.js中,它被作為單獨(dú)模塊實(shí)現(xiàn)。

Class: https.Server

這個(gè)類是tls.Server的子類,并且和http.Server觸發(fā)相同的事件。更多信息請參閱http.Server

server.setTimeout(msecs, callback)

參閱http.Server#setTimeout()。

server.timeout

參閱http.Server#timeout

https.createServer(options[, requestListener])

返回一個(gè)新的HTTPS web服務(wù)器對象。optionstls.createServer()中的類似。requestListener會(huì)被自動(dòng)添加為request事件的監(jiān)聽器。

例子:

// 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][, backlog][, callback])

server.listen(path[, callback])

server.listen(handle[, callback])

詳情參閱http.listen()。

server.close([callback])

詳情參閱http.close()

https.request(options, callback)

向一個(gè)安全web服務(wù)器發(fā)送請求。

options可以是一個(gè)對象或一個(gè)字符串。如果options是一個(gè)字符串,它會(huì)自動(dòng)被url.parse()解析。

所有的http.request()選項(xiàng)都是可用的。

例子:

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);
});

options參數(shù)有以下選項(xiàng):

  • host: 一個(gè)將要向其發(fā)送請求的服務(wù)器域名或IP地址。默認(rèn)為localhost。
  • hostname: host的別名。為了支持url.parse()的話,hostnamehost更好些。
  • family: 解析hosthostname時(shí)的IP地址協(xié)議族。合法值是46。當(dāng)沒有指定時(shí),將都被使用。
  • port: 遠(yuǎn)程服務(wù)器端口。默認(rèn)為80
  • localAddress: 用于綁定網(wǎng)絡(luò)連接的本地端口。
  • socketPath: Unix域socket(使用host:portsocketPath)。
  • method: 指定HTTP請求方法的字符串。默認(rèn)為GET。
  • path: 請求路徑。默認(rèn)為/。如果有查詢字符串,則需要包含。例如'/index.html?page=12'。請求路徑包含非法字符時(shí)拋出異常。目前,只否決空格,不過在未來可能改變。
  • headers: 一個(gè)包含請求頭的對象。
  • auth: 用于計(jì)算認(rèn)證頭的基本認(rèn)證,即'user:password'
  • agent: 控制agent行為。當(dāng)使用一個(gè)代理時(shí),請求將默認(rèn)為Connection: keep-alive。可能值有:

  • undefined (默認(rèn)): 在這個(gè)主機(jī)和端口上使用全局`agent。
  • Agent object: 在agent中顯示使用passed。
  • false: 跳出agent的連接池。默認(rèn)請求為Connection: close

以下來自tls.connect()的選項(xiàng)也可以被指定。但是,一個(gè)globalAgent會(huì)默默忽略這些。

  • pfx: 證書,SSL所用的私鑰和CA證書。默認(rèn)為null
  • key: SSL所用的私鑰。默認(rèn)為null。
  • passphrase: 私鑰或pfx的口令字符串。默認(rèn)為null。
  • cert: 所用的公共x509證書。默認(rèn)為null
  • ca: 一個(gè)用來檢查遠(yuǎn)程主機(jī)的權(quán)威證書或權(quán)威證書數(shù)組。
  • ciphers: 一個(gè)描述要使用或排除的密碼的字符串。更多格式信息請查詢http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT。
  • rejectUnauthorized: 如果設(shè)置為true,服務(wù)器證書會(huì)使用所給的CA列表驗(yàn)證。驗(yàn)證失敗時(shí),一個(gè)error事件會(huì)被觸發(fā)。驗(yàn)證發(fā)生于連接層,在HTTP請求發(fā)送之前。默認(rèn)為true。
  • secureProtocol: 所用的SSL方法,如SSLv3_method強(qiáng)制使用SSL v3??捎玫闹等Q你的OpenSSL安裝和SSL_METHODS常量。

要指定這些選項(xiàng),使用一個(gè)自定義的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可以是一個(gè)對象或一個(gè)字符串。如果options是一個(gè)字符串,它會(huì)自動(dòng)被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);
});

Class: https.Agent

一個(gè)與http.Agent類似的HTTPS Agent對象。更多信息請參閱https.request()。

https.globalAgent

所有HTTPS客戶端請求的全局https.Agent實(shí)例。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號