Cookie深度揭秘

2021-09-11 14:20:08 字數 2431 閱讀 3540

http是一種無狀態的請求/響應協議,使用者通過瀏覽器訪問web站點後,web服務端沒有可用資訊來判斷是哪個使用者發起的請求,更加無法知道下次訪問的還是不是上次訪問的使用者,無法識別當前使用者。最初,為了解決這個問題出現了很多解決方案,例如客戶端ip位址跟蹤、使用者登入認證、url中嵌入識別資訊等,但都沒有很好的解決根本問題。然而,cookie的設計實現很好的解決了這個問題。使用者通過瀏覽器訪問web站點後,服務端會將一些key/value組合的鍵值對通過set-cookie或set-cookie2返回給瀏覽器,使用者再次訪問web站點時瀏覽器會將符合條件的鍵值對再傳送給服務端,這樣服務端就可以通過這個鍵值資訊識別出當前使用者。

cookie可以分為兩類:會話cookie和持久cookie。會話cookie是一種臨時cookie,沒有設定它的有效期,當使用者退出瀏覽器的時候,它將會被刪除。當設定了cookie的有效期後,它就是持久cookie,它可以被儲存到硬碟上,當使用者退出瀏覽器或機器重啟時,它依然存在,可以被再次讀取使用。

當前可使用的cookie規範有兩個版本:cookie版本0和cookie版本1。cookie版本1是對cookie版本0的擴充套件,版本1可以和版本0互操作,但是cookie版本1沒有cookie版本0使用的廣泛。

版本0定義了set-cookie響應首部、cookie請求首部。

set-cookie響應首部,其實就是服務端返回的cookie資訊,具體的語法如下:

set-cookie:key=value;expires=date;domain=domain;path=path;secure

複製**

key/value表示在服務端可跟蹤、可識別的使用者資訊;expires表示cookie的結束日期,如果沒指定,cookie會在使用者退出瀏覽器時過期;domain告訴瀏覽器這個cookie可以被傳送到哪個網域名稱,如果沒指定,預設為產生cookie的伺服器主機名,瀏覽器會儲存很多不同**的cookie,瀏覽器會根據domain的值將cookie傳送到對應的網域名稱下;path指定cookie對哪些請求路徑生效,如果沒指定,預設為產生cookie的url路徑;secure表示在使用ssl安全連線時才傳送cookie,若沒設定secure,則沒限制。例如:

set-cookie:member_id=1496800101;expires=tuesday 16-aug-01 22:10:11 gmt;domain=「abc.com";path=/member;secure

複製**

cookie請求首部,就是瀏覽器請求服務端時傳送的cookie資訊,具體語法如下:

cookie:key1=value1;key2=value2;key3=value3...

複製**

例如:

cookie:member_id=1496800101

複製**

版本1定義了set-cookie2響應首部、cookie2請求首部。這個版本做了如下一些改動:

1.為每個cookie新增了解釋性文字,用於解釋其目的;

2.使用者退出瀏覽器時,允許不考慮過期時間,將cookie銷毀;

3.使用相對秒數來設定cookie的生存時間;

4.對cookie的生效限制,新增了埠條件,可以通過domain、path和port來共同限制;

5.在傳送cookie請求首部時,會將domain、path和port一起傳送到服務端;

6.為了實現版本的互操作,使用版本號;

7.使用$字首來附加服務端返回的cookie資訊。

set-cookie2響應首部具體語法如下:

set-cookie2:key=value;version=「1」;comment=comment;commenturl=commenturl;discard;max-age=age;domain=domain;path=path;port=port;secure

複製**

version對應cookie規範的版本;comment說明伺服器如何去使用這個cookie;commenturl表示乙個url,指向描述該cookie的文件;discard表示如果設定此標識,會在瀏覽器退出時放棄此cookie;max-age使用相對當前時間的秒數來設定cookie的生命週期;port表示對cookie生效的埠,多個埠可用逗號分隔。

cookie2請求首部會回傳每個cookie的附加資訊,也就是set-cookie2中的屬性資訊,例如:

cookie:$version=「1」;member_id=14690801;$domain=「abc.com」;$path=/member

複製**

雖然cookie可以很好的解決識別使用者的問題,但是,它也有很多的缺點:

1.不安全,容易被破壞或盜取;

2.cookie儲存在瀏覽器中,瀏覽器對cookie的數量和大小有限制;

3.cookie中資料量很大時對效能和頻寬有所損耗;

揭秘深度強化學習 1簡述

看完覺得深受啟發的一篇文章,根據自己的理解翻譯過來留以後再次翻看 某年某月某一天,deepmind在arxiv上發表 playing atari with deep reinforcement learning 在這篇 中,他們證明了一台計算機是如何只通過 觀察螢幕的畫素點 和 遊戲分數增加時獲得獎...

深度學習揭秘之防止過擬合(overfitting)

神經網路通過大量的引數模擬各種繁多的任務,並能擬合各種複雜的資料集。這種獨特的能力使其能夠在許多難以在 傳統 機器學習時代取得進展的領域 例如影象識別 物體檢測或自然語言處理等領域表現優異。然而,有時候,最大的優點也是潛在的弱點。模型在學習過程時,如果缺乏控制可能會導致過擬合 overfitting...

揭秘支付寶中的深度學習引擎 xNN

深度學習 雲端還是移動端?近來,深度學習 dl 在影象識別 語音識別 自然語言處理等諸多領域都取得了突破性進展。dl通常給人以計算複雜 模型龐大的印象 從siri語音助手到各種聊天機械人 再到支付寶 掃五福 移動端收集資料 雲端加工處理似乎成為一種常識。然而對很多應用來說,這種模式其實只是無奈之選。...