javascript对cookie的操作

来源:互联网 发布:百度搜索大数据 编辑:程序博客网 时间:2024/05/23 13:24
/** * 设置cookie * @param {type} 名字,值,时间,路径,有效域名   * @returns {Boolean} */function setCookie(name, value, expires, path, domain) {    var str = name + "=" + escape(value);    if (expires || expires === 0) {        var date = new Date();        date.setTime(date.getTime() + expires * 1000);//expires单位为秒        str += ";expires=" + date.toUTCString();    }    if (path || path === 0) {        str += ";path=" + path;//指定可访问cookie的目录      }    if (domain || domain === 0) {        str += ";domain=" + domain;//指定可访问cookie的域      }    document.cookie = str;}/** * 取得cookie   * @param {type} name * @returns {Boolean} */function getCookie(name) {    var str = document.cookie.split("; ");//这里必须是“分号空格”    for (var i = 0; i < str.length; i++) {        var str2 = str[i].split('=');        if (str2[0] == name) {            if (str2[1] || str2[1] === 0) {                return unescape(str2[1]);            } else {                break;            }        }    }    return false;}/**  * 为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间  * @param {type} name cookie名 * @param {type} path cookie路径(默认为当前路径) * @returns {undefined}  */function delCookie(name, path) {    var date = new Date();    date.setTime(date.getTime() - 10000);    var str    if (path || path === 0) {        str = ";path=" + path;//指定可访问cookie的目录      }    document.cookie = name + '=' + str + ';expire=' + date.toUTCString();}

[下面讲的经个人觉得比较好哦!]

我们当然还得介绍cookie的四个属性。这些属性用下面的格式加到字符串值后面: name=<value>[; expires=<date>][; domain=<domain>][; path=<path>][; secure] 名称=<值>   [; expires=<日期>][; domain=<域>]    [; path=<路径>][; 安全] <value>, <date>, <domain> 和 <path> 应当用对应的值替换。 <date> 应当使用GMT格式,可以使用Javascript脚本语言的日期类Date的.toGMTString() 方法得到这一GMT格式的日期值。方括号代表这项是可选的。比如在 [; secure]两边的方括号代表要想把cookie设置成安全的,就需要把"; secure" 加到cookie字符串值的后面。如果"; secure" 没有加到cookie字符串后面,那么这个cookie就是不安全的。不要把尖括号<> 和方括号[] 加到cookie里(除非它们是某些值的内容)。设置属性时,不限属性,可以用任何顺序设置。 下面是一个例子,在这个例子里,cookie "username" 被设置成在15分钟之后过期,可以被服务器上的所有目录访问,可以被"mydomain.com"域里的所有服务器访问,安全状态为安全。

// Date() 的构造器设置以毫秒为单位
// .getTime() 方法返回时间,单位为毫秒
// 所以要设置15分钟到期,要用60000毫秒乘15分钟
var expiration = new Date((new Date()).getTime() + 15 * 60000);
document.cookie = "username=" + escape(form.username.value)+ "; expires ="+ expiration.toGMTString() + "; path=" + "/" + "; _domain=" + "mydomain.com" + "; secure";

// 我们定义一个函数,用来读取特定的cookie值。[得到指定名字的cookie对象哦!]
function getCookie(cookie_name){
    var allcookies = document.cookie;
    var cookie_pos = allcookies.indexOf(cookie_name);

    // 如果找到了索引,就代表cookie存在,
    // 反之,就说明不存在。
    if (cookie_pos != -1){
        // 把cookie_pos放在值的开始,只要给值加1即可。
        cookie_pos += cookie_name.length + 1;
        var cookie_end = allcookies.indexOf(";", cookie_pos);
        if (cookie_end == -1){
            cookie_end = allcookies.length;
        }
        var value = unescape(allcookies.substring(cookie_pos, cookie_end));
    }
    return value;
}
var cookie_val = getCookie("username");// 调用函数


3.为什么我设置了cookie的过期时间如果为关闭的时候就自动清空的话怎么没用呢?
Cookie概念:
Cookie的格式实际上是一段纯文本信息, 由服务器随着网页一起发送到客户端, 并保存在客户端硬盘中指定的目录的. 大家都传说Cookie会造成严重的安全威胁什么的, 其实不是这么回事情. 服务器读取Cookie的时候, 只能够读取到这个服务器相关的信息. 而且, 浏览器一般只允许存放300个Cookie, 每个站点最多存放20个, 而且, 每个Cookie的大小现在在4K, 根本不会占用多少空间. 并且, Cookie是有时效性质的. 例如, 设置了Cookie的存活时间为1分钟, 则一分钟后这个Cookie就会被浏览器删除

Cookie版本:
目前有两个版本:
版本0 : 由Netscape公司制定的,也被几乎所有的浏览器支持. Java中为了保持兼容性, 目前只支持到版本0, Cookie的内容中不能空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号。
版本1 : 根据RFC 2109文档制定的. 放宽了很多限制. 上面所限制的字符都可以使用. 但为了保持兼容性, 应该尽量避免使用这些特殊字符.


原创粉丝点击