HTTP協議與狀態保持

2021-06-18 18:00:07 字數 895 閱讀 7907

http協議與狀態保持

然而聰明(或者貪心?)的人們很快發現如果能夠提供一些按需生成的動態資訊會使web變得更加有用,就像給有線電視加上點播功能一樣。這種需求一方面迫使html逐步新增了表單、指令碼、dom等客戶端行為,另一方面在伺服器端則出現了cgi規範以響應客戶端的動態請求,作為傳輸載體的http協議也新增了檔案上載、cookie這些特性。其中cookie的作用就是為了解決http協議無狀態的缺陷所作出的努力。至於後來出現的session機制則是又一種在客戶端與伺服器之間保持狀態的解決方案。

讓我們用幾個例子來描述一下cookie和session機制之間的區別與聯絡。筆者曾經常去的一家咖啡店有喝5杯咖啡免費贈一杯咖啡的優惠,然而一次性消費5杯咖啡的機會微乎其微,這時就需要某種方式來紀錄某位顧客的消費數量。想象一下其實也無外乎下面的幾種方案:

1、該店的店員很厲害,能記住每位顧客的消費數量,只要顧客一走進咖啡店,店員就知道該怎麼對待了。這種做法就是協議本身支援狀態。

2、發給顧客一張卡片,上面記錄著消費的數量,一般還有個有效期限。每次消費時,如果顧客出示這張卡片,則此次消費就會與以前或以後的消費相聯絡起來。這種做法就是在客戶端保持狀態。

3、發給顧客一張會員卡,除了卡號之外什麼資訊也不紀錄,每次消費時,如果顧客出示該卡片,則店員在店裡的紀錄本上找到這個卡號對應的紀錄新增一些消費資訊。這種做法就是在伺服器端保持狀態。

由於http協議是無狀態的,而出於種種考慮也不希望使之成為有狀態的,因此,後面兩種方案就成為現實的選擇。具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於採用伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助於cookie機制來達到儲存標識的目的,但實際上它還有其他選擇

原文:

無狀態http和常用狀態保持方式

瀏覽器和伺服器使用 socket通訊,伺服器把請求結果返回到瀏覽器後,socket 連線就會關閉,伺服器會在處理頁面完畢後銷毀頁面物件。當瀏覽器再次和伺服器進行通訊時,伺服器已經不記得上次是怎麼處理網頁的請求的。當使用者輸入一些資訊,想要跳轉到下乙個頁面的時候,資料就會丟掉,再也獲取不了那些資料了。...

HTTP協議 狀態碼

2xx 成功 200 請求成功,請求的資料隨之返回。3xx 重定向 301 永久性重定向。302 暫時行重定向。304 未修改 305 使用 307 臨時重定向 4xx 請求錯誤 401 未授權 當前請求需要使用者驗證。403 禁止 伺服器拒絕請求。404 未找到 請求失敗,請求的資料在伺服器上未發...

http協議狀態碼

http狀態返回 1xx 臨時響應 表示臨時響應並需要請求者繼續執行操作的狀態 http狀態返回 說明 100 繼續 請求者應當繼續提出請求。伺服器返回此 表示已收到請求的第一部分,正在等待其餘部分。101 切換協議 請求者已要求伺服器切換協議,伺服器已確認並準備切換。http狀態返回 2xx 成功...