专业编程基础技术教程

网站首页 > 基础教程 正文

前端技术-cookie-同一域名下不同path下js中获取域名下的cookie

ccvgpt 2024-11-26 00:49:03 基础教程 1 ℃

同一域名下不同path下通过js中获取域名下的cookie,拿不到cookie值



前端技术-cookie-同一域名下不同path下js中获取域名下的cookie

在前端开发过程中通过js设置/获取cookie,有时候会碰到这个问题


域名:abc.com


通过以下代码设置cookie


var date=new Date(); //获取当前时间
var expiresDays=time;  //将date设置为n天以后的时间
date.setTime(date.getTime()+expiresDays*24*3600*1000); //格式化为cookie识别的时间
document.cookie=key + "=" + val +";expires="+date.toGMTString(); 



路径1: abc.com/shop/


路径2:abc.com/list/


通过以下代码获取


function getCookie(name) 
{ 
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
 
    if(arr=document.cookie.match(reg))
 
        return unescape(arr[2]); 
    else 
        return null; 
} 



在整个js设置、读取cookie的过程中都没有问题,但是会出现在路径1下设置的cookie在路径2下通过js是获取不到的情况


这个问题产生的原因就是因为浏览器是根据域名+目录来确定最后要取的cookie对应的具体位置


就跟我们后端开发java里面的命名空间是一样的,不同的path(不同命名空间)可以存在名称相同的cookie(class),并且值也是不一样的


具体实例看下京东/天猫的解决方式,就是所有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;  
   };  



在SetCookie方法中直接将path同一设置成 /

?

Tags:

最近发表
标签列表