cookie是指web瀏覽器存儲的少量數據,該數據會在每次請求一個相關的URL時自動傳到服務器中(轉)


  基本概念:cookie是指web瀏覽器存儲的少量數據,該數據會在每次請求一個相關的URL時自動傳到服務器中。

  以博客園為例,我們看看cookie有哪些屬性:

  1、Name:cookie的名稱;

  2、Value:cookie名稱對應的值;

  3、Domain:設置cookie作用域。默認是當前web服務器的主機名。設置該屬性可使大型網站子域之間共享cookie,不過只能設置為當前服務器的域。

舉個栗子:order.example.com域下的服務器想讀取catalog/example.com域下設置的cookie,則將domain設為.example.com。

  既然講到了cookie作用域,就多說一點,cookie作用域是通過文檔源和文檔路徑來確定的,默認作用域和創建它的頁面有關,對該頁面及該頁面同目錄或子目錄的其他頁面可見。

  4、Path:設置cookie作用域。來自同一個服務器的頁面,只要其URL以指定的路徑前綴開始,都可以共享cookie。(注意該屬性不能用作訪問控制機制)

舉個栗子:http://www.test.com/catalog/widgets/index.html頁面創建了一個cookie,如果path屬性設置為/catalog,那么該cookie對於http://www.test.com/catalog/order.html可見;如果path屬性設置為/,那么該cookie對於http://www.test.com的服務器上的頁面都可見。

  5、Expires/Max-Age:控制cookie的有效期。cookie默認的有效期只能持續在web瀏覽器的會話期間,一旦用戶關閉瀏覽器,cookie保存的數據就消失了,可以通過設置該屬性來延長cookie有效期,瀏覽器會將cookie數據存儲在一個文件中,到了有效期才會刪除它。

  6、Size:cookie大小。每個cookie保存的數據(名字和值的總量)不能超過4KB。

  7、HTTP

  8、Secure:表明cookie值以何種形式通過網絡傳遞的布爾值。cookie默認以不安全的形式傳遞(即默認值為 false),一旦被標識為安全的,那就不能自動傳遞,只有瀏覽器和服務器通過HTTPS或其他安全協議連接時才傳遞。

  了解基礎知識后,我們來實踐一下,對cookie進行讀寫。

  將過期時間設為1天的示例:

復制代碼
function setCookie(key, val, options) {
        options = options || {};
        var expires = options.expires;

        if (typeof (expires) === "number") {
            expires = new Date();
            expires.setTime(expires.getTime() + options.expires);
        }

        document.cookie =
            key + "=" + escape(val) 
            + (expires ? ";expires=" + expires.toGMTString() : "") 
            + (options.path ? ";path=" + options.path : ";path=/") 
            + (options.domain ? "; domain=" + options.domain : "");
    };
    setCookie('name','yun',{expires:1*24*60*60*1000});
復制代碼

  獲取cookie值的示例:

復制代碼
function getCookie(key) {
        var a, reg = new RegExp("(^| )" + key + "=([^;]*)(;|$)");
        if (a = document.cookie.match(reg)) {
            return unescape(a[2]);
        } else {
            return "";
        }
    };
    console.log(getCookie('name'));
復制代碼

  參考資料:

1、Flanagan, D. javascript權威指南[M]. 北京:機械工業出版社, 2012. 586-592

http://www.cnblogs.com/lovelyun/p/5401248.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM