HTTP 是一種無狀態協議,那麼如何在 Web 瀏覽器和 Web 伺服器之間維護會話呢?


HTTP 是一種“無狀態”協議,這意味著每次客戶端檢索網頁時,客戶端都會開啟與 Web 伺服器的單獨連線,並且伺服器不會自動保留任何先前客戶端請求的記錄。

維護 Web 客戶端和伺服器之間的會話

現在讓我們討論一些在 Web 客戶端和 Web 伺服器之間維護會話的選項:

Cookie

Web 伺服器可以為每個 Web 客戶端分配一個唯一的會話 ID 作為 Cookie,並且對於客戶端的後續請求,可以使用接收到的 Cookie 來識別它們。

這可能不是一種有效的方法,因為瀏覽器有時不支援 Cookie。不建議使用此過程來維護會話。

隱藏表單欄位

Web 伺服器可以傳送一個隱藏的 HTML 表單欄位,並附帶一個唯一的會話 ID,如下所示:

<input type = "hidden" name = "sessionid" value = "12345">

此條目表示,當提交表單時,指定的名稱和值會自動包含在 **GET** 或 **POST** 資料中。每次 Web 瀏覽器傳送請求時,都可以使用 **session_id** 值來跟蹤不同的 Web 瀏覽器。

這可能是跟蹤會話的一種有效方法,但點選常規(<A HREF...>)超文字連結不會導致表單提交,因此隱藏表單欄位也不能支援常規會話跟蹤。

URL 重寫

您可以在每個 URL 的末尾附加一些額外的資料。這些資料標識會話;伺服器可以將該會話識別符號與其儲存的有關該會話的資料相關聯。

例如,對於 **https://tutorialspoint.tw/file.htm;sessionid=12345**,會話識別符號附加為 **sessionid = 12345**,可以在 Web 伺服器上訪問以識別客戶端。

URL 重寫是維護會話的一種更好方法,並且在瀏覽器不支援 Cookie 時也可以使用。這裡的缺點是,您必須動態生成每個 URL 以分配會話 ID,即使頁面是一個簡單的靜態 HTML 頁面。

更新於:2019-07-30

4K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告