1. 程式人生 > >cookie簡單理解

cookie簡單理解

 cookie 是瀏覽器端儲存資料的技術. 伺服器不能儲存 cookie, 但是伺服器可以傳送請求命令瀏覽器儲存 cookie.

  如何儲存 cookie
        在 document 中有一個屬性 叫 cookie
        cookie 是一個 鍵值對, 是一個使用 等號 連線的鍵值, 是一個字串
        cookie 直接使用 賦值來追加資料
        多個 cookie 的資料使用 分號空格 連線, 並且他也是一個字串
    cookie 的儲存特點
        1> cookie 預設是生命週期是瀏覽器關閉以前
        2> cookie 在多個頁面中可以共享資料
        3> cookie 可以伴隨 http 請求傳遞資料
        4> cookie 在儲存非 ascii 碼的時候要使用指定方法來轉換
            escape, unescape
            encodeURI, decodeURI
            encodeURIComponent, decodeURIComponent
        5> cookie 的儲存可以設定生命週期
            給每一個 cookie 值新增一個屬性 expires, 其取值為一個 時間型別的字串
            今天基本上使用 max-age 來代替 expires 屬性, max-age 取值是秒數
        6> cookie 的訪問級別( path )
            使用 path 屬性可以配置 cookie 的訪問級別, 即哪一個資料夾下的檔案可以訪問該 cookie
            預設是 ./
            如果希望上一級目錄可以訪問, 就給 path 賦值上一級目錄的目錄名
            如果希望整個網站都可以訪問, 那麼使用 path=/ 即可
        7> cookie 不能夠跨域, 但是可以是設定同域的訪問級別( domain )
        8> cookie 還有一個特性 secure
            cookie 會伴隨著 http 請求傳送.
            secure 如果設定為 true 表示只有在 https 請求的時候傳送
        9> 一般如果希望不使用 cookie 來儲存資料( 會隨著 HTTP 請求提交 )
            可以使用隱藏域: <input type="hidden" >
            html5 開始引入了其他的儲存資料的辦法: 本地儲存( localStorage )




 如何讀取 cookie 中的資料


    讀取的時候會將所有的資料都一併取出來, 但是並非全部資料我都需要, 因此這裡需要對資料進行解析
    cookie 資料格式: '鍵=值; 鍵=值; 鍵=值'
    獲得資料的時候理論上是利用鍵名取對應 的值
    字典結構( 鍵值對結構 )


    將 cookie 字串轉換成 一個 物件的演算法
    
    function getCookie() {
        var cookies = document.cookie.split( ';' ).map(function ( v ) { return v.trim(); });
        var cookie = {};
        cookies.forEach( function ( v ) {
            var kv = v.split( '=' );
            cookie[ kv[ 0 ] ] = kv[ 1 ];
        });
        return cookie;
    }




    在伺服器端如何操作 cookie 和 session
    $_COOKIE
    $_SESSION


    cookie 是瀏覽器端的操作, 所以伺服器 不 可以操作 cookie.
    在伺服器端允許向 瀏覽器傳送一個 set-cookie 的響應