由於http是無狀態的協議,這種特性嚴重阻礙了客戶端與服務器進行動態交互,例如購物車程序,客戶在購物車中添加了商品,服務器如何知道購物車已有的物品呢?為了支持客戶端與服務器之間的交互,為了彌補http的不足,目前實現會話跟蹤的常用技術方法:cookie、session、url重寫、隱藏input。
cookie
Cookie是客戶端技術,程序把每個用戶的數據以cookie的形式寫給用戶各自的瀏覽器。當用戶使用瀏覽器再去訪問服務器中的web資源時,就會帶着各自的數據去。
辦公資源網址導航 https://www.wode007.com
session
Session 是存儲在服務端的,並針對每個客戶端(客戶),通過SessionID來區別不同用戶的。 該會話過程直到session失效(服務端關閉),或者客戶端關閉時結束。相比cookie更安全,一般網站是session結合着cookie一起使用的
url重寫
客戶程序在每個URL的尾部添加一些額外數據。這些數據標識當前的會話,服務器將這個標識符與它存儲的用戶相關數據關聯起來。 URL重寫是比較不錯的會話跟蹤解決方案,即使瀏覽器不支持 cookie 或在用戶禁用 cookie 的情況下,這種方案也能夠工作。 最大的缺點是每個頁面都是動態的,如果用戶離開了會話並通過書簽或鏈接再次回來,會話的信息也會丟失,因為存儲下來的鏈接含有錯誤的標識信息。
隱藏input
<input type="hidden" name="content" value="haha">
提交表單時,要將指定的名稱和值自動包括在 GET 或 POST 數據中。這個隱藏域可以用來存儲有關會話的信息,但它的主要缺點是:僅當每個頁面都是由表單提交而動態生成時,才能使用這種方法。單擊常規的超文本鏈接並 不產生表單提交,因此隱藏的表單域不能支持通常的會話跟蹤,只能用於一系列特定的操作中,比如在線商店的結賬過程。