Object 內建對象

物件HttpCookie

HttpCookie 是HTTP 協定封裝的cookie 對象,它提供了取得、設定cookie 的各個屬性,同時也支援多個cookie 的組織與處理,是http.Requesthttp.Response兩個物件都支援的一個重要屬性

在伺服器端,可以透過HttpRequest.cookies來取得HTTP 請求中的所有cookie。這裡的每個cookie 都是一個HttpCookie 對象,透過它的屬性或方法可以取得或設定cookie 的相關資訊。例如我們可以透過下述程式碼從客戶端發送的cookie 讀取對應屬性:

1 2 3 4 5 6 7
const http = require('http'); const server = new http.Server(8080, function(request) { const cookies = request.cookies; const name = cookies.get('name'); request.response.write(`Hello ${name}!`); }); server.start();

這裡我們使用HttpRequest.cookies屬性取得請求中的所有cookie。然後使用cookies.get 方法,傳入cookie 的名稱,來取得該cookie 的值。

為了向客戶端發送一個cookie,可以透過HttpCookie 物件來建立一個新的cookie 並將其新增至HttpReponse.cookies 集合中。以下是一個範例:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
const http = require('http'); const server = new http.Server(8080, function(request) { const cookies = request.cookies; let name = cookies.get('name'); if (name) { request.response.write(`Hello ${name} again!`); } else { name = 'User'; request.response.cookies.add(new http.Cookie('name', name, { expires: new Date(Date.now() + 900000) })); request.response.write(`Welcome ${name}!`); } }); server.start();

在上述範例中,我們首先取得了HttpServletRequest.cookies,然後嘗試從中讀取名稱為name 的cookie 的值。如果cookie 存在,那就向請求發送回應並使用該cookie 的值來向客戶端打招呼。如果該cookie 不存在,我們建立一個新的cookie 對象,並將其新增至HttpServletResponse.cookies 集合中。配有name 和value 的第一個參數用於指定cookie 名稱和對應的值。同時,expires 屬性用來指定cookie 的過期時間,這裡指定了現在時間加上15 分鐘為過期時間。最後,我們將傳回值的內容新增上歡迎語。

繼承關係

建構函數

HttpCookie

HttpCookie 建構函數,建立一個新的HttpCookie 物件

1
new HttpCookie(Object opts = {});

呼叫參數:

  • opts: Object, 指定已建立的cookie 的屬性

opts 可以設定的選項如下:

1 2 3 4 5 6 7 8 9
{ "name": "", // specify the name of the cookie "value": "", // specify the value of the cookie "expires": Date, // specify the expires time of the cookie "domain": "", // specify the domain of the cookie "path": "", // specify the path of the cookie "secure": false, // specify the secure of the cookie "httpOnly": false, // specify the httpOnly of the cookie }

HttpCookie 建構函數,建立一個新的HttpCookie 物件

1 2 3
new HttpCookie(String name, String value, Object opts = {});

呼叫參數:

  • name: String, 指定已建立的cookie 名稱
  • value: String, 指定已建立的cookie 值
  • opts: Object, 指定建立的cookie 的其它屬性

opts 可以設定的選項如下:

1 2 3 4 5 6 7
{ "expires": Date, // specify the expires time of the cookie "domain": "", // specify the domain of the cookie "path": "", // specify the path of the cookie "secure": false, // specify the secure of the cookie "httpOnly": false, // specify the httpOnly of the cookie }

成員屬性

name

String, 查詢與設定cookie 名稱

1
String HttpCookie.name;

value

String, 查詢並設定cookie 的值

1
String HttpCookie.value;

domain

String, 查詢並設定cookie 的網域範圍

1
String HttpCookie.domain;

path

String, 查詢並設定cookie 的路徑範圍

1
String HttpCookie.path;

expires

Date, 查詢並設定cookie 的過期時間

1
Date HttpCookie.expires;

httpOnly

Boolean, 查詢和設定cookie 是否僅允許http請求,缺省false

1
Boolean HttpCookie.httpOnly;

secure

Boolean, 查詢與設定cookie 是否僅透過https 傳遞,預設值false

1
Boolean HttpCookie.secure;

成員函數

parse

解析給定的字串,填充cookie 對象

1
HttpCookie.parse(String header);

呼叫參數:

  • header: String, 指定需要解析的header 字串

match

檢測給定的url是否匹配當前設置

1
Boolean HttpCookie.match(String url);

呼叫參數:

  • url: String, 指定測試的url

回傳結果:

  • Boolean, 匹配成功回傳true

toString

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

1
String HttpCookie.toString();

回傳結果:

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

toJSON

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

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

呼叫參數:

  • key: String, 未使用

回傳結果:

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