HTTP無狀態協議之Cookie與Session!

2022-08-21 01:06:11 字數 2262 閱讀 9860

在討論什麼是cookie和session之前要先了解http的無狀態協議。

因為cookie與session是為了解決無狀態協議而誕生的。

http的無狀態協議:

當客戶端向伺服器發起請求並且在接收到伺服器返回給它的響應後,它就已經完成了一次傳輸的過程。這個過程是獨立的,也是乙個新的過程。

如果客戶端下次再發起請求並得到對應的響應,那麼下次的過程與這次其實沒有任何關聯。無論是客戶端還是服務端,都不會去記錄這個過程。

而無狀態帶來的影響就是,當後續的請求需要之前的資訊的話,則它必須重新上傳,因為伺服器不會記住之前你上傳的資訊是什麼。

這樣就會導致每次發起請求的資料量都會非常的大。

cookie: 

cookie是一種通過在客戶端儲存狀態的解決方案,cookie是由服務端生成的,但是以檔案的形式儲存在客戶端。每次客戶端向服務端發起請求後,都會帶上對應

cookie內的資訊一併發送到服務端。cookie的資訊不同於請求的內容資訊,它不是放在響應體(response body)中,而是放在響應頭(response header)中,這樣

客戶端通過cookie向服務端發起請求後,服務端就能解析cookie來識別該客戶端是否在之前就有發起過請求。就能保證客戶端和服務端之間的關係持久。

cookie包含的字段:

id-cookie對應的標識

name-cookie的名字

value-cookie對應的屬性值

domian-網域名稱,表示該cookie對應哪個ip有效

path-路徑,表示該cookie對應ip下的哪個路徑有效

expires/max-age-表示cookie到達該時間後就會失效,如果不設定則預設值是session,意為與session一起失效(當整個瀏覽器關閉cookie失效)

set-cookie: id=123456789; expires=wed, 25-apr-2018 06:04:48 gmt; domain = 119.29.100.135 path=/pro/

//

cookie的名稱

string name = "cookie test";

//cookie的值

string value = "default value";

//新建cookie例項,cookie的建構函式是new cookie(name,value)

cookie cookie = new

cookie(name, value);

//時間單位為"秒",設定成-1表示關閉瀏覽器即清除cookie,預設為-1

cookie.setmaxage(9999);

//設定路徑,這個路徑即該工程下都可以訪問該cookie 如果不設定路徑,那麼只有設定該cookie路徑及其子路徑可以訪問

cookie.setpath("/");

//由伺服器生成cookie下發給客戶端

//解析客戶端請求頭中的cookie

//返回cookie陣列

cookie cookies =request.getcookies();

for(cookie cookie : cookies)

//刪除其實就只將cookie儲存時間設定為「0」

cookie.setmaxage(0);

response.addcookie(cookie);

session:

session的作用與cookie大同小異,都是為了保持客戶端與服務端之間的聯絡而存在。

但是session是存在服務端的記憶體中的,當客戶端向服務端發起請求的時候,由服務端下發乙個session-id給客戶端,客戶端通過儲存這個id,

在下次再向服務端發起請求的時候,在請求頭中傳入該id,來告訴服務端一些對應的身份資訊。由於session的內容是存放在服務端的記憶體中的

所有想要清楚session就不是簡單的關閉瀏覽器能實現的。

刪除session的方式可以通過對session設定超時時間,讓session自行銷毀。或者伺服器重啟服務會清空服務記憶體,也可以做到session的清除。

建立session的方式

HTTP協議 無狀態

blog 個人 目錄cookie和session http是一種不儲存狀態,即無狀態 stateless 協議。http協議自身不對請求和響應之間的通訊狀態進行儲存。也就是說在http這個級別,協議對於傳送過的請求或響應都不做持久化處理。可以理解為,瀏覽器傳送請求給伺服器時,伺服器響應請求 但同乙個...

HTTP無狀態協議詳解

概述 http協議是無狀態的。無狀態是指協議對於事務處理沒有記憶能力,這意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。無狀態的根本原因是 瀏覽器與伺服器是使用socket套接字進行通訊的,伺服器將請求結果返回給瀏覽器之後,會關閉當前的socket連線,而且伺服...

HTTP無狀態協議和Connection長 短連線

目錄 http無狀態協議 connection 短連線 長連線 1 定義 無狀態是指協議對於事務處理沒有記憶能力,伺服器不知道客戶端是什麼狀態。從另一方面講,開啟乙個伺服器上的網頁和你之前開啟這個伺服器上的網頁之間沒有任何聯絡。2 優點 伺服器不用為每個客戶端連線分配記憶體來記憶大量狀態,也不用在客...