Object 內建對象

物件HttpsServer

HttpsServer 是用來建立https 伺服器的對象,HttpsServer 物件可以使用HttpServer所有的介面函數和屬性。 HttpsServer 物件可以透過在建立時傳入之前使用openssl 產生的憑證物件 (X509Cert類型) 和密鑰物件 (PKey類型),從而為客戶端提供ssl加密保護的服務

https 伺服器物件是將SslServerHttpHandler組合封裝的對象,方便快速建置伺服器,邏輯相當於:

1 2 3
var svr = new net.SslServer(crt, key, addr, port, new http.Handler(function(req) { ... }));

下面是一個使用HttpsServer 的範例程式碼:

1 2 3 4 5 6 7 8 9 10 11 12
const http = require("http"); const crypto = require("crypto"); // load cert and key const cert = crypto.loadCert("server.crt"); const key = crypto.loadPKey("server.key"); // create https server const server = new http.HttpsServer(cert, key, 8443, function(req) { resp.response.write(`Hello, Fibjs!`); }); server.start();

在上面的範例中,我們載入了一個名為"server.crt" 和"server.key" 的憑證和私鑰文件,然後使用HttpsServer 物件建立了一個服務,並開啟了監聽8443 連接埠的服務,當客戶端透過" https://localhost:8443/ " 存取服務時,就可以受到ssl加密保護。

要注意的是,如果是需要讓外部存取的話,需要確保憑證是公信機構頒發的,否則客戶端無法驗證,降低了效能和安全,並可能觸發安全警告。

繼承關係

建構函數

HttpsServer

HttpsServer 建構函數,在所有本機位址偵聽

1 2 3
new HttpsServer(Array certs, Integer port, Handler hdlr);

呼叫參數:

  • certs: Array, 伺服器憑證列表
  • port: Integer, 指定http伺服器偵聽連接埠
  • hdlr:Handler,http內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見

certs 格式為:

1 2 3 4 5 6 7 8 9 10 11
[{ name: "fibjs.org", crt: [X509Cert object], key: [PKey object] }, { name: "*.fibjs.org", crt: [X509Cert object], key: [PKey object] } ]

HttpsServer 建構函數

1 2 3 4
new HttpsServer(Array certs, String addr, Integer port, Handler hdlr);

呼叫參數:

  • certs: Array, 伺服器憑證列表
  • addr: String, 指定http伺服器偵聽位址,為"" 則在本機所有位址偵聽
  • port: Integer, 指定http伺服器偵聽連接埠
  • hdlr:Handler,http內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見

certs 格式為:

1 2 3 4 5 6 7 8 9 10 11
[{ name: "fibjs.org", crt: [X509Cert object], key: [PKey object] }, { name: "*.fibjs.org", crt: [X509Cert object], key: [PKey object] } ]

HttpsServer 建構函數,在所有本機位址偵聽

1 2 3 4
new HttpsServer(X509Cert crt, PKey key, Integer port, Handler hdlr);

呼叫參數:

  • crt:X509Cert,X509Cert證書,用於客戶端驗證伺服器
  • key:PKey,PKey私鑰,用於與客戶端會話
  • port: Integer, 指定http伺服器偵聽連接埠
  • hdlr:Handler,http內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見

HttpsServer 建構函數

1 2 3 4 5
new HttpsServer(X509Cert crt, PKey key, String addr, Integer port, Handler hdlr);

呼叫參數:

  • crt:X509Cert,X509Cert證書,用於客戶端驗證伺服器
  • key:PKey,PKey私鑰,用於與客戶端會話
  • addr: String, 指定http伺服器偵聽位址,為"" 則在本機所有位址偵聽
  • port: Integer, 指定http伺服器偵聽連接埠
  • hdlr:Handler,http內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見

成員屬性

verification

Integer, 設定憑證驗證模式,預設為VERIFY_NONE

1
Integer HttpsServer.verification;

ca

X509Cert, 用戶端憑證驗證ca

1
readonly X509Cert HttpsServer.ca;

maxHeadersCount

Integer, 查詢並設定最大請求頭個數,缺省為128

1
Integer HttpsServer.maxHeadersCount;

maxHeaderSize

Integer, 查詢並設定最大請求頭長度,預設為8192

1
Integer HttpsServer.maxHeaderSize;

maxBodySize

Integer, 查詢並設定body 最大尺寸,以MB 為單位,預設為64

1
Integer HttpsServer.maxBodySize;

enableEncoding

Boolean, 自動解壓縮功能開關,預設為關閉

1
Boolean HttpsServer.enableEncoding;

serverName

String, 查詢設定伺服器名稱,預設為:fibjs/0.x.0

1
String HttpsServer.serverName;

socket

Socket, 伺服器目前偵聽的Socket物件

1
readonly Socket HttpsServer.socket;

handler

Handler, 伺服器目前事件處理介面對象

1
Handler HttpsServer.handler;

成員函數

enableCrossOrigin

允許跨域請求

1
HttpsServer.enableCrossOrigin(String allowHeaders = "Content-Type");

呼叫參數:

  • allowHeaders: String, 指定接受的http頭字段

start

啟動目前伺服器

1
HttpsServer.start();

stop

關閉socket中止正在運作的伺服器

1
HttpsServer.stop() async;

toString

傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現

1
String HttpsServer.toString();

回傳結果:

  • String, 傳回物件的字串表示

toJSON

傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合

1
Value HttpsServer.toJSON(String key = "");

呼叫參數:

  • key: String, 未使用

回傳結果:

  • Value, 傳回包含可JSON 序列化的值