無狀態指的是任意乙個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是乙個無狀態協議。所謂的無狀態是指協議對於事務處理沒有記憶能力。伺服器向客戶機傳送被請求的檔案時,並不儲存任何關於該客戶機的狀態資訊。而無連線又是什麼...