IO.js HTTPS

2018-11-28 22:34 更新

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

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

Class: https.Server

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

server.setTimeout(msecs, callback)

參閱http.Server#setTimeout()。

server.timeout

參閱http.Server#timeout。

https.createServer(options[, requestListener])

返回一個新的HTTPS web服務器對象。optionstls.createServer()中的類似。requestListener會被自動添加為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)

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

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

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

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

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

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

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

要指定這些選項,使用一個自定義的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);
});

Class: https.Agent

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

https.globalAgent

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

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號