Cookie : 瀏覽者個人資訊的記錄

Lagoon>網站製作流程>互動性>Cookie>

於 HTTP 通訊協定是每傳一份資料時都重新在兩端主機之間建立網路連結,而不是像 telnet 服務一樣一旦連上了就一直保持連線到使用者要求斷線才結束連線,所以同一個瀏覽者在某一台機器上透過瀏覽器先後對同一個伺服器要求兩份文件的時候,伺服器根本不知道這兩個要求是來自同一個使用者的,因此一些應用在實作時會遭遇困難,例如電子商務中的購物車:瀏覽者先後在不同的網頁上選購多項商品後,伺服器怎麼知道這些商品是同一個使用者選購的? 最後能夠合併在一起結帳呢? 目前比較常用的幾種方法如下:

    1. hidden 輸入欄位:要得到這種連續網頁的效果的話最直覺的方式是讓伺服器每次在使用者決定選購時都要求使用者輸入他的識別資料,如此同一個識別資料的要求就可以合併在一起,不過每次要選購的時候都要求輸入識別資料的話,使用者會很煩就是了,另一個比較好的方法是以表單中的 hidden 輸入欄位記錄在下一個 HTML 資料中:

      在 HTML 的表單中有一種型態是 hidden 的輸入欄位如下:
      <input type=hidden name=xxx value=yyy>
      這種輸入欄位在頁面內不會顯示出來,但是當瀏覽者回答一些問題後,這個欄位的資料會被送回伺服器端的 CGI 程式,於是就可以在瀏覽者沒有感覺到的狀況下讓伺服端的 CGI 程式知道這是一個延續性的回答。

      範例

    2. Cookie:每次瀏覽者連上網站上的網頁後,透過 HTTP 協定標頭中的 Set-Cookie 欄位在瀏覽器裡記錄一些資料下來,或是運用 JavaScript 直接在瀏覽器內執行時設定一些資料,所設定的資料就稱為 Cookie,瀏覽器通常會根據 Cookie 的屬性來決定要記錄多久,所設定的 Cookie 資料在瀏覽器中會和該份網頁的 URL 或是網站的 URL 關連起來,以後當瀏覽器要求該份網頁或是該網站上所有的網頁時都會在 HTTP 要求封包中以 Cookie 欄位將所記錄下來的資料傳回伺服器,或是當瀏覽器下載這些文件後由文件內的 JavaScript 執行起來後直接讀取相對應的 Cookie 資料,如此就可以讓伺服器知道兩個網頁的要求是連續的,伺服器可以兩個網頁間的資料具有相關性。

      範例:使用者自定網頁底色

    3. ASP 的 Session 物件:如果使用微軟的 IIS 架站的話,另外一種記錄使用者前一次瀏覽時的資訊的方法就是使用 Active Server Page (ASP) 中的 Session 物件, Session 物件和 Cookie 有相類似的功能,但是 Session 物件是將使用者的資料記錄在伺服器端,不像 Cookie 是記錄在瀏覽器裡。

丁培毅製作