L--cookie 介绍 什么是cookie 客户端Cookie Cookie的属性 Cookie的操作 详细讲解

  cookie是浏览器提供的一种机制,它将document对象的cookie属性提供给JavaScript。可以由JavaScript对其进行控制,而并不是JavaScript本身的性质。cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个cookie可用。因此,cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。

什么是cookie

  Cookie是浏览器提供给客户端的用来存储少量数据的一种机制.通过Cookie无论是客户端脚本还是服务器端脚本,都可以很方便的在一个页面引用另一个页面的数据.Cookie是浏览器提供给javascript的少数持久化对象之一.所谓持久化对象,是指他的生命周期长于浏览器Window对象的生命周期.

客户端Cookie

  Document对象的cookie属性可以操作浏览器的cookie对象,这个对象是个单例模式,也就意味着它在浏览器实例中是唯一的,两个完全不同的窗口访问的是一个实例

  javascript是通过设置字符串的描述方式来通知浏览器创建和删除cookie的.(一直以来cookie是一个颇受争议的话题,由于涉及到安全隐患,遭到了众多网络专家的批评). 

Cookie的属性

  浏览器的cookie对象可以看做一个key-value的关联数组.有name和value两个必填属性,还有4个可选属性,分别是生存期,可见性,安全性.

  (1)生存期(expires).默认情况下cookie存储的值只在浏览器会话期间存在,当用户关闭浏览器,这些值就被销毁,如果要让cookie存在的时间超过会话期间,可以通过expires指定一个长久的失效日期,只要在这日期之  前,cookie就是存在的.

  (2)可见路径(path).指定了和cookie关联一起的网页,只有在设置的路径下才能访问到cookie,如果想让某个服务器域的任何网页都能访问这个cookie,可以将他的path设置成"/".

  (3)可见域(domain).同大多数浏览器持久化对象一样,cookie因为安全因素遵循"同源策略",因此在某个服务器域上创建的cookie只有在本域才能访问.默认情况下domain的值就是创建cookie所在服务器的主机名,在domain设置成子域可以限制cookie只有在子域下才能访问,但浏览器不允许将cookie设置成服务器所在域之外的域.

  (4)安全性(secure).是一个布尔值,指定了网络cookie的传输方式,默认的secure值为false,意味着可以通过普通的,不安全的http连接传输.但如果设置为true,那么cookie将只在浏览器通过Https或其他的安全协议才被传输.

Cookie的操作

<script type="text/javascript">
<!--
    var Cookie = {
        // 设置Cookie
        setCookie: function(name, value, expires, path, domain){
            document.cookie = name + "=" + escape( value ) + 
            ( ( expires ) ? ";expires=" + expires.toGMTString() : "" ) +
            ( ( path ) ? ";path=" + path : "" ) + 
            ( ( domain ) ? ";domain=" + domain : "" );
        },
        // 获取Cookie
        getCookie: function( name ){
            var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
            if(arr != null) return unescape(arr[2]); return null;
        },
        // 删除Cookie
        delCookie: function( name ){
            var d = new Date();
            d.setTime(d.getTime() - 3600 * 1000);
            this.setCookie(name, "", d);
        }
    }

    Cookie.setCookie("a", 34);    // 设置cookie为 name : a; value : 34
    Cookie.delCookie("a")          // 删除name为a的cookie
    alert(Cookie.getCookie("a")); // 返回null 因为cookie已经删除
//-->
</script>