如何使用Cookies

 

Cookies大家都知道,此篇文章說明如何使用Cookies,

基本上大家可以先把cookies想像成是記事本功能就可以了。

 

一、create cookie

例如要在cookie中寫入 username = brooke,則語法範例為

document.cookie = "username = brooke"

如下圖,先使用document.cookie列出cookie內所有內容,注意,標籤有分大小寫

由於我是使用.Net平台,

基於頁面避免被偽造安全措施(CSRF)所以可能會自動附加ckCsrfToken,

ckCsrfToken是唯讀的,開發者可以無視他。

當新增完 "username = brooke" 資料後,再使用document.cookie列出cookie內所有內容,

會看到cookie內有兩筆資料分別是ckCsrfToken與username,並且兩者用分號(;)隔開。

 

再新增一筆資料後,已存在的資料也不會被洗掉

 

二、read cookies

直接於console端下 document.cookie 指令就可以取得cookie所有內容,

另外也可以特別儲存在已宣告的變數內如

var x = document.cookie;

 

三、change cookies

可以針對特定一筆資料作修改

 

四、delete cookies

例如我要指定刪除某一筆資料時,則可以將該筆資料的值指定為空值,

並且設定到期時間小於現在,如下範例

document.cookie = "username=; expires=01 Feb 2017 00:00:00 UTC;"

如果在同一個網域之下怕誤刪相同名稱的資料,則可以特別指定路徑。

document.cookie = "username=; expires=01 Feb 2017 00:00:00 UTC; path=/;"

 

五、read specified cookies

document.cookie;指令只能夠一次讀取全部資料,而不行讀取某一筆資料,

目前只能撰寫javaScript程式來解決了。

方程式如下

<script>
    function getCookie(cname) {
        var name = cname + "=";
        var decodedCookie = decodeURIComponent(document.cookie);
        var collection = decodedCookie.split(";");
        for (var i = 0; i < collection.length; i++) {
            var c = collection[i];

            //當第n個集合的第一個字元is空白時,則從第二個字元開始取
            while (c.charAt(0) == ' ') {
                c = c.substring(1);
            }

            //如果name標籤被找到is該集合裡開頭第零個位址時,則表示被找到
            //將會回傳該集合中的值(不含標籤)
            if (c.indexOf(name) == 0) {
                return c.substring(name.length, c.length);
            }
        }
        return "";
    }
</script>

執行畫面