關於cookie和session估計很多程式設計師面試的時候都會被問到,這兩個概念在寫web以及爬蟲中都會涉及,並且兩者可能很多人直接回答也不好說的特別清楚,所以整理這樣一篇文章,也幫助自己加深理解
其實簡單的說就是當使用者通過http協議訪問乙個伺服器的時候,這個伺服器會將一些name/value鍵值對返回給客戶端瀏覽器,並將這些資料加上一些限制條件。在條件符合時,這個使用者下次再訪問伺服器的時候,資料又被完整的帶給伺服器。
cookie中包含了乙個由名字=值(name = value)這樣的資訊構成的任意列表,通過set-cookie或set-cookie2 http響應(擴充套件)首部將其貼到客戶端身上。如下圖例子所示:
其實這裡有乙個非常典型的應用,就是關於你登入很多**的賬號資訊,你讓記住密碼之後,一段時間內,不需要輸入密碼,每次都是登入狀態
這裡cookie主要分為兩種:
會話cookie:不設定過期時間,儲存在瀏覽器的記憶體中,關閉瀏覽器,cookie便被銷毀
普通cookie:設定了過期時間,儲存在硬碟上
因為最開始的cookie是網景公司定義的,後來又有了rfc版本所以當前的cookie有兩個版本:version 0 version 1 他們有兩種設定響應頭的標識,分別是:set-cookie和set-cookie2,這也造成了一些屬性的不同,這裡需要注意:常用的為version 0
version 0的屬性
name = value :鍵值對設定要儲存的name/value,這裡的name不能喝其他屬性的名字一樣
expires:過期時間
domain:生成該cookie的網域名稱
path: 該cookie是在當前的哪個路徑下生成
secure:如果設定了這個屬性,那麼只會在ssh連線時才會回傳該cookie
version 1的屬性
name=value:鍵值對設定要儲存的name/value,這裡的name不能喝其他屬性的名字一樣
comment:主是想,用於說明該cookie有什麼用途
commenturl:該伺服器為此cookie提供uri注釋
discard:是否在回話結束丟棄該cookie,預設為false
domain:生成該cookie的網域名稱
max-age:最大失效時間,與version 0不同的是這裡設定的是在多少秒後失效
path:該cookie是在當前的哪個路徑下生成
port:該 cookie 在什麼埠下可以回傳服務端,如果有多個埠,以逗號隔開
secure:如果設定了這個屬性,那麼只會在ssh連線時才會回傳該cookie
上面我們知道了cookie可以讓伺服器端跟蹤每個客戶端的訪問,但是每次客戶端的訪問都必須傳回這些 cookie,如果 cookie 很多,這無形地增加了客戶端與服務端的資料傳輸量,而 session 的出現正是為了解決這個問題。
同乙個客戶端每次和服務端互動時,不需要每次都傳回所有的cookie值,而是只要傳回乙個id這個id是客戶端第一次訪問伺服器的時候生成的,而且每個客戶端是唯一的。這樣每個客戶端就有了乙個唯一的id,客戶端只要傳回這個id就行了,這個id通常是nane為jsesionid的乙個cookie。所以session其實是利用cookie進行資訊處理的。
cookie和session的共同之處在於:cookie和session都是用來跟蹤瀏覽器使用者身份的會話方式。
cookie 和session的區別是:cookie資料儲存在客戶端,session資料儲存在伺服器端。
cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,如果主要考慮到安全應當使用session,當然也沒有絕對的安全,只是相對cookie,session更加安全
session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能,如果主要考慮到減輕伺服器效能方面,應當使用cookie
cookie和session各有優缺點,所以將登陸資訊等重要資訊存放為session;其他資訊如果需要保留,可以放在cookie中
所有的努力都值得期許,每乙份夢想都應該灌溉!
關於cookie和session估計很多程式設計師面試的時候都會被問到,這兩個概念在寫web以及爬蟲中都會涉及,並且兩者可能很多人直接回答也不好說的特別清楚,所以整理這樣一篇文章,也幫助自己加深理解
其實簡單的說就是當使用者通過http協議訪問乙個伺服器的時候,這個伺服器會將一些name/value鍵值對返回給客戶端瀏覽器,並將這些資料加上一些限制條件。在條件符合時,這個使用者下次再訪問伺服器的時候,資料又被完整的帶給伺服器。
cookie中包含了乙個由名字=值(name = value)這樣的資訊構成的任意列表,通過set-cookie或set-cookie2 http響應(擴充套件)首部將其貼到客戶端身上。如下圖例子所示:
其實這裡有乙個非常典型的應用,就是關於你登入很多**的賬號資訊,你讓記住密碼之後,一段時間內,不需要輸入密碼,每次都是登入狀態
這裡cookie主要分為兩種:
會話cookie:不設定過期時間,儲存在瀏覽器的記憶體中,關閉瀏覽器,cookie便被銷毀
普通cookie:設定了過期時間,儲存在硬碟上
因為最開始的cookie是網景公司定義的,後來又有了rfc版本所以當前的cookie有兩個版本:version 0 version 1 他們有兩種設定響應頭的標識,分別是:set-cookie和set-cookie2,這也造成了一些屬性的不同,這裡需要注意:常用的為version 0
version 0的屬性
name = value :鍵值對設定要儲存的name/value,這裡的name不能喝其他屬性的名字一樣
expires:過期時間
domain:生成該cookie的網域名稱
path: 該cookie是在當前的哪個路徑下生成
secure:如果設定了這個屬性,那麼只會在ssh連線時才會回傳該cookie
version 1的屬性
name=value:鍵值對設定要儲存的name/value,這裡的name不能喝其他屬性的名字一樣
comment:主是想,用於說明該cookie有什麼用途
commenturl:該伺服器為此cookie提供uri注釋
discard:是否在回話結束丟棄該cookie,預設為false
domain:生成該cookie的網域名稱
max-age:最大失效時間,與version 0不同的是這裡設定的是在多少秒後失效
path:該cookie是在當前的哪個路徑下生成
port:該 cookie 在什麼埠下可以回傳服務端,如果有多個埠,以逗號隔開
secure:如果設定了這個屬性,那麼只會在ssh連線時才會回傳該cookie
上面我們知道了cookie可以讓伺服器端跟蹤每個客戶端的訪問,但是每次客戶端的訪問都必須傳回這些 cookie,如果 cookie 很多,這無形地增加了客戶端與服務端的資料傳輸量,而 session 的出現正是為了解決這個問題。
同乙個客戶端每次和服務端互動時,不需要每次都傳回所有的cookie值,而是只要傳回乙個id這個id是客戶端第一次訪問伺服器的時候生成的,而且每個客戶端是唯一的。這樣每個客戶端就有了乙個唯一的id,客戶端只要傳回這個id就行了,這個id通常是nane為jsesionid的乙個cookie。所以session其實是利用cookie進行資訊處理的。
cookie和session的共同之處在於:cookie和session都是用來跟蹤瀏覽器使用者身份的會話方式。
cookie 和session的區別是:cookie資料儲存在客戶端,session資料儲存在伺服器端。
cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,如果主要考慮到安全應當使用session,當然也沒有絕對的安全,只是相對cookie,session更加安全
session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能,如果主要考慮到減輕伺服器效能方面,應當使用cookie
cookie和session各有優缺點,所以將登陸資訊等重要資訊存放為session;其他資訊如果需要保留,可以放在cookie中
python爬蟲之使用靜態Cookie模擬使用者登入
首先介紹下cookie內容,什麼是cookie。cookie的引文原意是 點心 它是在客戶端訪問web伺服器時,伺服器在客戶端硬c盤上存放的資訊,好像是伺服器傳送給客戶的 點心 伺服器可以根據cookie來跟蹤客戶狀態,這對於需c要區別客戶的場合 如電子商務 特別有用。當客戶端首次請求訪問伺服器時,...
python爬蟲 cookie的使用
在做登入的post請求時,需要記住cookie,否則不能訪問登入後的頁面。下面是登入的 postdata urllib.parse.urlencode encode utf 8 使用urlencode編碼處理後,再設定為utf 8編碼header req urllib.request.request...
python爬蟲cookie方面 1
cookie session 由於http協議的無記憶性,人們為了彌補這個缺憾,所採用的乙個補充協議 cookie是發給使用者 即http瀏覽器 的一段資訊,session是儲存在伺服器上的對應的另一半資訊,用來記錄使用者資訊 cookie和session的區別 存放位置不同 cookie不安全 s...