JS跨域设置与获取Cookie,测试通过,非常好用!

发布时间:2012年02月16日      浏览次数:865 次
在Javascript脚本里,一个cookie 实际就是一个字符串属性。当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值。每个cookie除了 name名称和value值这两个属性以外,还有四个属性。这些属性是: expires过期时间、 path路径、 domain域、以及 secure安全。

Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。

Path – 路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果http://www.***.com/a/index.html 建立了一个cookie,那么在http://www.***.com/a/目录里的所有页面,以及该目录下面任何子目录里的页面都可以 访问这个cookie。这就是说,在http://www.***.com/a/1/2 里的任何页面都可以访问http://www.***.com/a/index.html建立的cookie。但是,如果http: //www.***.com/b/ 需要访问http://www.***.com/a/index.html设置的cookes,该怎么办?这时,我们要把cookies 的path属性设置成“/”。

在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子: 如果想让 http://www.***.com/a/1/ 和http://www.***.com/a/2/共享cookies,就要把path设成“/a”。

Domain – 域。指定关联的WEB服务器或域。值是域名,比如***.com。这是对path路径属性的一个延伸。如果我们想让 a.***.com 能够访问b.***.com设置的cookies,该怎么办? 我们可以把domain属性设置成“***.com”,并把path属性设置成“/”。不能把cookies域属性设置成与设置它的服务器的 所在域不同的值。

Secure – 安全。指定cookie的值通过网络如何在用户和WEB服务器之间传递。这个属性的值或者是“secure”,或者为空。缺省情况下,该属性为空,也就是 使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure,那么,它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过,设置了secure属性不代表其他人不能看到你机器本 地保存的cookie。换句话说,把cookie设置为secure,只保证cookie与WEB服务器之间的数据传输过程加密,而保存在本地的 cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。

<script type="text/javascript">
//相关调用函数

//设置Cookie,调用方法如:setCookie("myCookie","yes");
function setCookie(c_name,value,expiredays,path,domain) {
      var exdate=new Date();
      exdate.setDate(exdate.getDate()+expiredays); //如果有效时间为空,则默认有效时间至关闭浏览器
      if ( path==null || path=="" ) path="/"; //设置默认为根目录
      if ( domain==null || domain=="" ) domain=""; //设置默认域名,如:***.com
      document.cookie=c_name+ "=" +escape(value)+";"+((expiredays==null || expiredays=="") ? "" : "expires="+exdate.toGMTString()+";")+((path==null || path=="")?"":"path="+path+";")+((domain==null || domain=="")?"":"domain="+domain+";");
}
//获取Cookie,调用方法如:getCookie("myCookie");
function getCookie(c_name) {
      if (document.cookie.length>0) {
            c_start=document.cookie.indexOf(c_name + "=");
            if (c_start!=-1) {
                  c_start=c_start + c_name.length+1 ;
                  c_end=document.cookie.indexOf(";",c_start);
                  if (c_end==-1) c_end=document.cookie.length;
                  return unescape(document.cookie.substring(c_start,c_end));
            }
      }
      return "";
}
</script>
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!