Cookie相關的Http頭
有 兩個Http頭部和Cookie有關:Set-Cookie和Cookie。
Set-Cookie由服務器發送,它包含在響應請求的頭部中。它用於在客戶端創建一個Cookie
Cookie頭由客戶端發送,包含在HTTP請求的頭部中。注意,只有cookie的domain和path與請求的URL匹配才會發送這個cookie。
Set-Cookie Header
Set-Cookie響應頭的格式如下所示:
Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]
expires=<date>: 設置cookie的有效期,如果cookie超過date所表示的日期時,cookie將失效。
如果沒有設置這個選項,那么cookie將在瀏覽器關閉時失效。
注意:date是格林威治時間(GMT),使用如下格式表示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
DAY, DD MMM YYYY HH:MM:SS GMT
DAY
The day of the week (Sun, Mon, Tue, Wed, Thu, Fri, Sat).
DD
The day
in
the month (such
as
01
for
the first day of the month).
MMM
The three-letter abbreviation
for
the month (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec).
YYYY
The year.
HH
The hour value
in
military time (22 would be 10:00 P.M.,
for
example).
MM
The minute value.
SS
The second value.
|
domain=<domain_name> :
path=<some_path>:
注:臨時cookie(沒有expires參數的cookie)不能帶有domain選項。
當客戶端發送一個http請求時,會將有效的cookie一起發送給服務器。
如果一個cookie的domain和path參數和URL匹配,那么這個cookie就是有效的。
一個URL中包含有domain和path,可以參考http://www.w3school.com.cn/html/html_url.asp
secure : 表示cookie只能被發送到http服務器。
httponly : 表示cookie不能被客戶端腳本獲取到。
secure屬性可防止信息在傳遞的過程中被監聽捕獲后導致信息泄露,如果設置為true,可以限制只有通過https訪問時,才會將瀏覽器保存的cookie傳遞到服務端,如果通過http訪問,不會傳遞cookie。
js對secure的支持是沒問題的,可是httponly本就是為限制js而產生的,當然httponly的cookie也不會被js創建
httponly參數只可以在服務器端設置
httponly參數是用來限制非HTTP協議程序接口對客戶端COOKIE進行訪問的,所以客戶端腳本,如JS是無法取得這種COOKIE的,同時,JQuery中的“$.cookie('xxx')”方法也無法正常工作,所以想要在客戶端取到httponly的COOKIE的唯一方法就是使用AJAX,將取COOKIE的操作放到服務端,接收客戶端發送的ajax請求后將取值結果通過HTTP返回客戶端。