[不是工程師] 會員系統用Session還是Cookie? 你知道其實他們常常混在一起嗎?
「帥哥~你的早餐好了」,五分鐘概述網路界的記憶大神-Session
在上一篇文章我們提到,在網路發展便捷的背後裡,
「不是工程師」系列是以生活化 / 口語化的方式,
提供科技用詞或是功能另外一種理解的方式,
所以很多用詞與邏輯可能不是那麼的嚴謹,還請見諒。
舉凡像是登入來說,
就像我們點餐之後,店員會給我們一張點餐明細與號碼,
也許這樣的方式就已經可以解決大多數的問題了,
「欸帥哥是不是又瘦了,欸帥哥剪頭髮喔,
這裡我們必須再提及一次HTTP的特性了,
那Session又是什麼呢?
Session有點類似會話的概念,
而Session機制是一種服務器端的機制,
而另外一個「保持狀態」,則是指通信交談的其中一方,
所以我們可以想像Cookie是一張領餐的號碼牌,
當我們需要為某個客戶端的請求創建一個Session的時候,
但是在最初的 Session 設計中,我們都會把資料記錄在 Server端 上,如 Database、記憶體或是利用檔案交換的方式,
保存這個Session id的方式也可以採用Cookie,
但大家都會擔心,Cookie和Session得結合,
總之Session是一種靈活且機動的應用,
如果單就實現功能,Cookie與Session彼此之間是可以互換的(指的是你可以把資料存放在Session或是Cookie,並不是指Session可以被放在Client端當Cookie使用)。但是Cookie在最單純的情況裡,是有安全性的問題(資料在Client端)。所以考量到這點,大部分都會選擇Session。但是正如Cookie是一個外加的功能,Session也不屬於HTTP協定。只要是外加功能,就必須額外寫程式實現。
不過現在做網站我們都流行使用框架,Session的機制都被框架所實現了,以Ruby on Rails來說,預設的Session實現方式是由Cookie來實作的(利用加密與設定過期時間)。每個框架實現的邏輯都可能不一樣,所以還是要去看官方的說明會比較清楚。但從這裡可得知,Session並不是一個很明確實體的機制,算是一個概念,只要符合概念所實作出來的功能都可以被叫做Session。
補充:Ruby on rails Session::CookieStore
最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!