[js点滴]JavaScript之Cookie/Session机制详解02

在上一篇文章[js点滴]JavaScript之Cookie/Session机制详解01我们已经讲了cookie的相关属性,相关用法,下面继续讲一下cookie的相关操作
##2.Cookie的设置、获取

//获取指定名称的cookie值
<script language="JavaScript" type="text/javascript"> 
 
function getCookie(name){ 
  var strCookie=document.cookie; 
  var arrCookie=strCookie.split("; "); 
  for(var i=0;i<arrCookie.length;i++){ 
    var arr=arrCookie[i].split("="); 
    if(arr[0]==name){
      return unescape(arr[1]);
    }else{
         return ""; 
     } 
  } 
  
} 
 
</script> 
//添加一个cookie 
<script language="JavaScript" type="text/javascript"> 
  
function addCookie(name,value,expiresHours){ 
var cookieString=name+"="+escape(value); 
//判断是否设置过期时间,0代表关闭浏览器时失效
if(expiresHours>0){ 
var date=new Date(); 
date.setTime(date.getTime+expiresHours*3600*1000); 
cookieString=cookieString+"; expires="+date.toGMTString(); 
} 
document.cookie=cookieString; 
} 
 
</script> 


##2.Cookie的修改、删除
Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie。

//根据指定名称的cookie修改cookie的值
<script language="JavaScript" type="text/javascript"> 
   
function editCookie(name,value,expiresHours){ 
var cookieString=name+"="+escape(value); 
//判断是否设置过期时间,0代表关闭浏览器时失效
if(expiresHours>0){ 
  var date=new Date(); 
  date.setTime(date.getTime+expiresHours*3600*1000); //单位是多少小时后失效
  cookieString=cookieString+"; expires="+date.toGMTString(); 
} 
  document.cookie=cookieString; 
} 
  
</script>
//删除指定名称的cookie 
 
function deleteCookie(CKname) 
 
{ 
 
 document.cookie = CKname+"=;expires="+(new Date(0)).toGMTString(); 
 
}; 

##2. Cookie的域名
Cookie是不可跨域名的。域名www.google.com颁发的Cookie不会被提交到域名www.baidu.com去。这是由Cookie的隐私安全机制决定的。隐私安全机制能够禁止网站非法获取其他网站的Cookie。

正常情况下,同一个一级域名下的两个二级域名如www.helloweenvsfei.com和images.helloweenvsfei.com也不能交互使用Cookie,因为二者的域名并不严格相同。如果想所有helloweenvsfei.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数,例如:


Cookie cookie = new Cookie("time","20080808"); // 新建Cookie
cookie.setDomain(".helloweenvsfei.com");  // 设置域名
cookie.setPath("/"); // 设置路径
cookie.setMaxAge(Integer.MAX_VALUE);// 设置有效期
response.addCookie(cookie);  // 输出到客户端

注意:domain参数必须以点(".")开始。另外,name相同但domain不同的两个Cookie是两个不同的Cookie。如果想要两个域名完全不同的网站共有Cookie,可以生成两个Cookie,domain属性分别为两个域名,输出到客户端。

##3. Cookie的路径
我们在存储信息到cookie中的时候要指定了下path,不然是找不到路径的.

//设置Cookie  
   function SetCookie(name, value) {  
       var exp = new Date();  
       exp.setTime(exp.getTime() + 3 * 24 * 60 * 60 * 1000); //3天过期  
       document.cookie = name + "=" + encodeURIComponent(value) + ";expires=" + exp.toGMTString()+";path=/";  
       return true;  
   };

#4.cookie注意事项
1)说的通俗一点,cookie就是一个字符串(这点可以用alert(typeof document.cookie)来验证),用来保存一些客户信息。

2)程序员可以对其写入任何想写入的东西,只要不超过cookie的大小限制(4kb)。

3)cookie的操作办法最简单的说法就是对document.cookie进行操作(写入你要需保存的内容)。

4)cookie有一个关键字是expires,它是用来设置cookie的有效期的,默认情况(不设置expires)是当浏览器关闭的时候,自动清除cookie。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图解AI

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值