物件HttpCookie
HttpCookie 是HTTP 協定封裝的cookie 對象,它提供了取得、設定cookie 的各個屬性,同時也支援多個cookie 的組織與處理,是http.Request和http.Response兩個物件都支援的一個重要屬性
在伺服器端,可以透過HttpRequest.cookies來取得HTTP 請求中的所有cookie。這裡的每個cookie 都是一個HttpCookie 對象,透過它的屬性或方法可以取得或設定cookie 的相關資訊。例如我們可以透過下述程式碼從客戶端發送的cookie 讀取對應屬性:
1
2
3
4
5
6
7const 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
17const 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 物件
1new 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
3new 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 名稱
1String HttpCookie.name;
value
String, 查詢並設定cookie 的值
1String HttpCookie.value;
domain
String, 查詢並設定cookie 的網域範圍
1String HttpCookie.domain;
path
String, 查詢並設定cookie 的路徑範圍
1String HttpCookie.path;
expires
Date, 查詢並設定cookie 的過期時間
1Date HttpCookie.expires;
httpOnly
Boolean, 查詢和設定cookie 是否僅允許http請求,缺省false
1Boolean HttpCookie.httpOnly;
secure
Boolean, 查詢與設定cookie 是否僅透過https 傳遞,預設值false
1Boolean HttpCookie.secure;
成員函數
parse
解析給定的字串,填充cookie 對象
1HttpCookie.parse(String header);
呼叫參數:
- header: String, 指定需要解析的header 字串
match
檢測給定的url是否匹配當前設置
1Boolean HttpCookie.match(String url);
呼叫參數:
- url: String, 指定測試的url
回傳結果:
- Boolean, 匹配成功回傳true
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String HttpCookie.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value HttpCookie.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值