標籤:html 會員制 儲存 記錄 免費 name 有效期間 電視 檔案
HTTP協議與狀態保持 HTTP協議本身是無狀態的,這與HTTP協議本來的目的是相符的,用戶端只需要簡單的向伺服器請求下載某些檔案,無論是用戶端還是伺服器都沒有必要紀錄彼此過去的行為,
每一次請求之間都是獨立的,好比一個顧客和一個自動售貨機或者一個普通的(非會員制)大賣場之間的關係一樣。然而聰明(或者貪心?)的人們很快發現如果能夠提供一些按需產生的動態資訊會使web變得更加有用,就像給有線電視加上點播功能一樣。這種需求一方面迫使HTML逐步添加了表單、指令碼、DOM等用戶端行為,
另一方面在伺服器端則出現了CGI規範以響應用戶端的動態請求,作為傳輸載體的HTTP協議也添加了檔案上傳、cookie這些特性。其中cookie的作用就是為瞭解決HTTP協議無狀態的缺陷所作出的努力。
至於後來出現的session機制則是又一種在用戶端與伺服器之間保持狀態的解決方案。讓我們用幾個例子來描述一下cookie和session機制之間的區別與聯絡。筆者曾經常去的一家咖啡店有喝5杯咖啡免費贈一杯咖啡的優惠,然而一次性消費5杯咖啡的機會微乎其微,
這時就需要某種方式來紀錄某位顧客的消費數量。
想象一下其實也無外乎下面的幾種方案:1、該店的店員很厲害,能記住每位顧客的消費數量,只要顧客一走進咖啡店,店員就知道該怎麼對待了。這種做法就是協議本身支援狀態。2、發給顧客一張卡片,上面記錄著消費的數量,一般還有個有效期間限。每次消費時,如果顧客出示這張卡片,則此次消費就會與以前或以後的消費相聯絡起來。這種做法就是在用戶端保持狀態。3、發給顧客一張會員卡,除了卡號之外什麼資訊也不紀錄,每次消費時,如果顧客出示該卡片,則店員在店裡的紀錄本上找到這個卡號對應的紀錄添加一些消費資訊。這種做法就是在伺服器端保持狀態。由於HTTP協議是無狀態的,而出於種種考慮也不希望使之成為有狀態的,因此,後面兩種方案就成為現實的選擇。具體來說cookie機制採用的是在用戶端保持狀態的方案,
而session機制採用的是在伺服器端保持狀態的方案。
同時我們也看到,由於採用伺服器端保持狀態的方案在用戶端也需要儲存一個標識,所以session機制可能需要藉助於cookie機制來達到儲存標識的目的
如何在HTTP用戶端與伺服器端之間保持狀態(轉)