获取和设置cookie的方法(5种)

Posted 武侯668

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取和设置cookie的方法(5种)相关的知识,希望对你有一定的参考价值。

//--------------------------11111111111
var createCookie = function (a, b, c, d) {
    var d = d ? d : "/";
    if (c) {
        var e = new Date;
        e.setTime(e.getTime() + 24 * c * 60 * 60 * 1e3);
        var f = "; expires=" + e.toGMTString()
    } else var f = "";
    document.cookie = a + "=" + b + f + "; path=" + d
};
var readCookie = function (a) {
    var b = a + "=";
    var c = document.cookie.split(";");
    for (var d = 0; d < c.length; d++) {
        var e = c[d];
        for (; " " == e.charAt(0);)e = e.substring(1, e.length);
        if (0 == e.indexOf(b))return e.substring(b.length, e.length)
    }
    return null
};
//--------------------------22222222222222
var a;
a:{
    for (var b = document.cookie.length, c = 0; c < b;) {

        var e = c + 11; //e应该是一个起始位置。
        // 如果是这个名字
        if ("__ltjdvals=" == document.cookie.substring(c, e)) {
            // 寻找;的位置 在e之后;
            var f = e, g = document.cookie.indexOf(";", f);

            -1 == g && (g = document.cookie.length);
            a = unescape(document.cookie.substring(f, g)); //获得cookie的值
            break a
        }
        c = document.cookie.indexOf(" ", c) + 1;
        if (0 == c)break  //如果没有空格,跳出循环
    }
    a = null  //返回kong
}
//------
var d = new Date;
d.setTime(d.getTime() + 12E5);
document.cookie = "__ltjdvals=" + escape("1927367272|baidu-pinzhuan|t_292769910_baidupi" +
        "nzhuan|cpc| d0a00922ee39486cb57e6fd7f7d85fe4_0_b67c5a26708b478ca5a77ad02567118e") +
    ";expires=" + d.toGMTString();
//----------------------------3333333333333333
function getCookieVal(offset) {
    var endstr = document.cookie.indexOf(";", offset); //结束位置
    if (endstr == -1) endstr = document.cookie.length; //没有找到就是cookie的条数
    return unescape(document.cookie.substring(offset, endstr));
}
function SetCookie(name, value, time) { //键、 值、过期时间
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + 60 * 1000 * time);  //传入过期时间
    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
}
function GetCookie(name) {
    var arg = name + "=";
    var alen = arg.length; //属性名的长度
    var clen = document.cookie.length;  //cookie的长度
    var i = 0;
    while (i < clen) {
        var j = i + alen;    // 属性名的长度
        if (document.cookie.substring(i, j) == arg) return getCookieVal(j);  //第一次循环得到一个cookie值。
        i = document.cookie.indexOf(" ", i) + 1; //一个新的起始位置,也就是下一个位置,  相当于是搜索了。
    }
    return null;
}
//------------------------4444444444444444444
function getCookie(c_name){
    if (document.cookie.length>0){  //先查询cookie是否为空,为空就return ""
        c_start=document.cookie.indexOf(c_name + "=")  //通过String对象的indexOf()来检查这个cookie是否存在,不存在就为 -1  
        if (c_start!=-1){
            c_start=c_start + c_name.length+1  //最后这个+1其实就是表示"="号啦,这样就获取到了cookie值的开始位置
            c_end=document.cookie.indexOf(";",c_start)  //其实我刚看见indexOf()第二个参数的时候猛然有点晕,后来想起来表示指定的开始索引的位置...这句是为了得到值的结束位置。因为需要考虑是否是最后一项,所以通过";"号是否存在来判断
            if (c_end==-1) c_end=document.cookie.length
            return unescape(document.cookie.substring(c_start,c_end))  //通过substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基础,想了解的可以搜索下,在文章结尾处也会进行讲解cookie编码细节
        }
    }
    return ""
}

function setCookie(c_name, value, expiredays){
        var exdate=new Date();
        exdate.setDate(exdate.getDate() + expiredays);
         document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
       } //  使用方法:setCookie(‘username‘,‘Darren‘,30)
//--------------------555555555555
//写cookies

function setCookie(name,value)
{
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

//读取cookies
function getCookie(name)
{
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");

    if(arr=document.cookie.match(reg))

        return unescape(arr[2]);
    else
        return null;
}

//删除cookies
function delCookie(name)
{
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
    if(cval!=null)
        document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//使用示例
setCookie("name","hayden");
alert(getCookie("name"));

//如果需要设定自定义过期时间
//那么把上面的setCookie 函数换成下面两个函数就ok;


//程序代码
function setCookie(name,value,time)
{
    var strsec = getsec(time);
    var exp = new Date();
    exp.setTime(exp.getTime() + strsec*1);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getsec(str)
{
    alert(str);
    var str1=str.substring(1,str.length)*1;
    var str2=str.substring(0,1);
    if (str2=="s")
    {
        return str1*1000;
    }
    else if (str2=="h")
    {
        return str1*60*60*1000;
    }
    else if (str2=="d")
    {
        return str1*24*60*60*1000;
    }
}

 

以上是关于获取和设置cookie的方法(5种)的主要内容,如果未能解决你的问题,请参考以下文章

5.Servlet的Cookie和Session

获取、设置 cookie 和 csrf

selenium 设置header中的cookie跳过验证码

需要一种有效的方法来避免使用 Laravel 5 重复代码片段

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

C#WebBrowser怎么获取和设置Cookie的方法