http無狀態設計與Cookie和Session

2021-06-27 19:26:11 字數 1138 閱讀 8915

無狀態指的是任意乙個web請求必須完全與其他請求隔離,當請求端提出請求時,請求本身包含了相應端為相應這一請求所需的全部資訊。

1. 被呼叫者不儲存引數,因為無需考慮引數邏輯

由使用者來儲存狀態,進行狀態邏輯設計

http是無狀態設計的,一些sdk的設計也可以是無狀態的。

2. 而一些需求是需要有互動的,需要狀態的

如: a. 表單(form);

b. 客戶端的指令碼處理、dom處理等功能;

c. 伺服器的cgi(common gateway inte***ce)以處理包含表單提交在內的動態請求。

互動是需要承前啟後的,乙個實際例子是,簡單的購物車程式也要知道使用者到底在之前選擇了什麼商品。

這種客戶端與伺服器進行動態互動的web應用程式,都需要狀態。

解決方法:

兩種用於保持http連線狀態的技術就應運而生了,乙個是cookie,而另乙個則是session。

cookie是客戶端儲存狀態的解決方案,cookie就是由伺服器發給客戶端的特殊資訊,而這些資訊以文字檔案的方式存放在客戶端,然後客戶端每次向伺服器傳送請求的時候都會帶上這些特殊的資訊。cookie一般是放在http header中的。比如user id, user name, user的身份資訊,user school, user company等.當然服務端也會保留這些cookie資訊的,並且可以給這些cookie新增額外的屬性,如過期時間等。

session是伺服器來保持狀態的解決方案。客戶端瀏覽器與伺服器之間一系列互動的動作稱為乙個session,其不僅包含session持續的時間,還包括操作,還有伺服器端為客戶端所開闢的儲存空間,在其中儲存的資訊就是用於保持狀態。伺服器收到客戶端請求時,會為該session生成唯一的session id,在session被建立之後,就可以呼叫session相關的方法往session中增加內容了,而這些內容只會儲存在伺服器中,發到客戶端的只有session id;當客戶端再次傳送請求的時候,會將這個session id帶上,伺服器接受到請求之後就會依據session id找到相應的session,從而再次使用之。這樣使用者先前的狀態或請求也就得以保持了。

而useragent是跟device相關的,軟硬體的資訊。與系統相關,與每個url都相關,但與user無關。是讓伺服器拿到這些資訊,更好的適配這些請求。如版本資訊、時區、瀏覽器的種類等等。

HTTP協議 無狀態

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

HTTP協議之無連線與無狀態

http協議一共有五大特點,1 支援客戶 伺服器模式 2 簡單快速 3 靈活 4 無連線 5 無狀態。其中無狀態是其中主要特點之一。因此,常說 http是乙個無狀態協議。所謂的無狀態是指協議對於事務處理沒有記憶能力。伺服器向客戶機傳送被請求的檔案時,並不儲存任何關於該客戶機的狀態資訊。而無連線又是 ...

HTTP協議之無連線與無狀態

http協議一共有五大特點,1 支援客戶 伺服器模式 2 簡單快速 3 靈活 4 無連線 5 無狀態。其中無狀態是其中主要特點之一。因此,常說http是乙個無狀態協議。所謂的無狀態是指協議對於事務處理沒有記憶能力。伺服器向客戶機傳送被請求的檔案時,並不儲存任何關於該客戶機的狀態資訊。而無連線又是什麼...