很多網站在你瀏覽網頁之後,會在你的瀏覽器中留下一些小小的資料,這就是所謂的「Cookie」。當你再次瀏覽這些網站時,系統便會去讀取這些 Cookie,找回與你曾經有過的片刻記憶。
「Cookie」不是餅乾,Cookie 是伺服器暫存在你電腦上的一筆資料,好讓伺服器用來辨認你的電腦。就好比是格林童話故事中,沿途撒下麵包屑避免在森林中迷路的小孩。
為什麼需要 Cookie?
HTTP 的協議本身是「無記憶狀態 (Stateless) 」的,無論是用戶端還是網頁伺服器,每一個頁面都沒有關聯,每一次的請求都是單獨的請求。伺服器藉由 Cookie 來讓同一個用戶的各項操作都可以產生關聯。
當你在瀏覽網站的時候,伺服器會先送一些小小的資料放在你的瀏覽器上,Cookie 會幫你在網站上所打的文字或是一些選擇都紀錄下來。當下次你再光臨同一個網站,網頁伺服器會先查看有沒有上次留下的 Cookie,有的話,就會依據 Cookie 裡的內容來判斷用戶,送出特定的網頁內容給你。
Cookie 的使用很普遍,許多有提供個人化服務的網站,都是利用 Cookie 來識別用戶,以方便送出為用戶量身而做的內容,像是 Web 介面的免費 email 網站,都有用到 Cookie。
Cookie 會不會有危險?其實 Cookie 中記載的資料有限,Cookie 是安全的。網站不可能經由 Cookie 獲得你的 email 地址或是其他私人資料,更沒有辦法透過 Cookie 來存取你的電腦。
但是如果你實在不喜歡網頁伺服器亂丟 Cookie 到你家,當然可以讓瀏覽器拒絕網站存放 Cookie 到你的瀏覽器。
IE 瀏覽器從「工具」選單 → Intertnet 選項 → 安全性,按「自訂層級」,到 Cookie 的部分,全都設為「關閉」,再重新啟動瀏覽器即可。
當你關閉 Cookie 之後,很多網站的個人化服務功能很可能就不能再使用了。
IE 的 Cookie 預設存放位置是在: C:\WINDOWS\Temporary Internet Files
你可以直接刪掉這裡面的東西或是利用「Internet 選項」裡的清除檔案按鈕來清除。
Cookie 的內容
大家想不想知道哪個網站有設 Cookie?你的 Cookie 資料又為何?其實,用一行簡單的 JavaScript 指令就可以一清二楚了。
首先,開啟一個網站,例如 http://www.google.com ,一旦網站開啟後,在瀏覽器的位址列中輸入以下的 JavaScript 指令:
javascript:alert("Cookie:"+document.cookie)
或
javascript:document.write(document.cookie)
按下 Enter 後,你會見到跳出一個小警告視窗,上面便會標明你的 Cookie 資料,試試看吧!
比較新的瀏覽器,如 Chrome 與 Firefox 都有內建「開發人員工具」,只要按 F12 開啟「開發人員工具」,可以在「Application」或「儲存空間」頁籤看到網站所儲存的 Cookie 內容。
什麼是 Session?
講到 Cookie 就會有人提到 Session。
Session 的資料是存放在 Web 伺服器端。用解釋的不好解釋,我們先來舉個例子...
有一家咖啡店要舉辦咖啡買三送一的活動,若以「Cookie」或「Session」的作法來看:
- Cookie:
相當於是店家發給你一張「小卡片」,每次你來買一杯咖啡就在卡片上蓋個印章,集滿三個印章,那咖啡店就會送你一杯免費的咖啡。
其中,購買咖啡的記錄是留在你攜帶的卡片上,如果卡片遺失你的記錄就不存在了。
- Session:
相當於是店家請你加入他們的會員,然後發給你一張「會員卡」(Session ID)。每次你拿會員卡來買咖啡都會在店家的電腦裡留下記錄,買了三杯咖啡就會送你一杯免費的咖啡。
其中,購買咖啡的記錄是儲存在店家的電腦裡,如果會員卡遺失了可以透過核對會員的資料來重新取得會員卡,未來這張會員卡甚至可能在它的連鎖店使用。
可以說,Cookie 只做一件事,就是存取伺服器暫存在客戶端的資料。而 Session 則是一個涵蓋範圍比較廣、比較完整的保存機制。並且 Session 仍需藉由 Cookie、網址或表單...等三種方式來識別用戶的 Session ID,才能接續之後伺服器要做的事情。
只要「網站是將任何用戶的資料儲存在伺服器,並且用 Cookie、網址或表單來識別單一用戶」,這樣就已經是在實作 Session 了。由於「識別用戶」是很普遍的功能,你所使用的程式框架 (Framework) 有可能在無聲無息之中就已經幫你完成整個機制了,你只要把心思用在程式的其它部份即可。
參考網頁
近期迴響