目錄
- Cookie相關(guān)的Http頭
- Set-Cookie Header
- 在程序中生成expires
Cookie總是保存在客戶端中,按在客戶端中的存儲位置,可分為內(nèi)存Cookie和硬盤Cookie。內(nèi)存Cookie由瀏覽器維護,保存在內(nèi)存中,瀏覽器關(guān)閉后就消失了,其存在時間是短暫的。硬盤Cookie保存在硬盤里,有一個過期時間,除非用戶手工清理或到了過期時間,硬盤Cookie不會被刪除,其存在時間是長期的。所以,按存在時間,可分為非持久Cookie和持久Cookie。
Cookie相關(guān)的Http頭
有 兩個Http頭部和Cookie有關(guān):Set-Cookie和Cookie。
Set-Cookie由服務器發(fā)送,它包含在響應請求的頭部中。它用于在客戶端創(chuàng)建一個Cookie
Cookie頭由客戶端發(fā)送,包含在HTTP請求的頭部中。注意,只有cookie的domain和path與請求的URL匹配才會發(fā)送這個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將在瀏覽器關(guān)閉時失效。
注意:date是格林威治時間(GMT),使用如下格式表示: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
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參數(shù)的cookie)不能帶有domain選項。
當客戶端發(fā)送一個http請求時,會將有效的cookie一起發(fā)送給服務器。
如果一個cookie的domain和path參數(shù)和URL匹配,那么這個cookie就是有效的。
一個URL中包含有domain和path,可以參考https://www.jb51.net/w3school/html/html_url.htm
secure : 表示cookie只能被發(fā)送到http服務器。
httponly : 表示cookie不能被客戶端腳本獲取到。
在程序中生成expires
C的方式
time_t curTime = time(NULL);
tm * gmTime = gmtime(curTime);
char strExperis[50];
strftime(strTimeBuf, 100, " %a, %d %b %Y %X GMT;", gmTime);
JavaScript的方式
var d = new Date();
var expires = d.toGMTString();
Windows中的InternetSetCookie
在Windows中我們可以使用InternetSetCookie來設置Cookie,假如說,A和B兩個進程使用Cookie通信,那么會有如下幾種情況:
> A寫Global Cookie,B寫Session Cookie,此時,A中無法獲取Cookie
> A寫Session Cookie,B寫Session Cookie,此時,A與B中的Cookie互不影響
> A寫Session Cookie,B寫Global Cookie,此時A中的Cookie被Global Cookie覆蓋,它們共享一份Global Cookie
注:這種情況的后果下,如果有任意一個進程再寫Session Cookie,那么其他進程將獲取不到Cookie
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- OkHttp3中默認不保持Cookie的解決方法
- 淺談golang的http cookie用法
- Okhttp3實現(xiàn)爬取驗證碼及獲取Cookie的示例
- Python HTTP客戶端自定義Cookie實現(xiàn)實例
- PHP設置Cookie的HTTPONLY屬性方法
- httpwebreqeust讀取httponly的cookie方法
- 詳解HTTP Cookie狀態(tài)管理機制