javascript当中的cookie机制,使应用达到了真正的全局变量的要求,cookie是浏览器提供的一种机制,它将document
对象的cookie属性提供给JavaScript。可以由JavaScript对其进行控制,而并不是JavaScript本身的性质,由于cookie机制是把信息储存到硬盘,所以他可以用来做全局变量
cookie有关安全性和作用域
1、cookie可能被禁用。当用户非常注重个人隐私保护时,他很可能禁用浏览器的cookie功能;
2、cookie是与浏览器相关的。这意味着即使访问的是同一个页面,不同浏览器之间所保存的cookie也是不能互相访问的;
3、cookie可能被删除。因为每个cookie都是硬盘上的一个文件,因此很有可能被用户删除;
4、cookie安全性不够高。所有的cookie都是以纯文本的形式记录于文件中,因此如果要保存用户名密码等信息时,最好事先经过加密处理。
JS设置cookie
在原生的javascript当中,储存cookie使用键值对的方式来设置cookie,例如:
?
1
|
document.cookie= "userName=admin" ;
|
如果是要储存多个值,使用
“ ; ” 号加空格隔开,例如
?
1
|
document.cookie= "userName=admin; password=admin" ;
|
储存cookie并设置过期时间
?
1
2
3
4
5
6
7
8
9
10
|
//这里的过期时间是以GMT时间格式表示的时间字符串
//此句代码的一是为,将userName的过期时间设置为expiress定义好的时间,一旦超过这个时间cookie将失效
document.cookie= "userName=admin; expiress=过期时间" ;
//创建一个cookie,设置一个过期时间
<script language= "JavaScript"
type= "text/javascript" >
var
date= new
Date(); //获取当前时间
date.setTime(date.getTime()+1*24*3600*1000); //将date设置为1天以后的时间
document.cookie= "userName=admin; expires=" +date.toGMTString(); //将userName设置为1天后过期
</script>
|
删除Cookie
?
1
2
3
4
5
6
7
8
9
10
11
|
//将cookie设置为过去的时间可达到删除cookie的效果
<script language= "JavaScript"
type= "text/javascript" >
//获取当前时间
var
date= new
Date();
//将date设置为过去的时间
date.setTime(date.getTime()-10000);
//将userName这个cookie删除
document.cookie= "userName=admin; expires=" +date.toGMTString();
</script>
|
取值
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<script language= "JavaScript"
type= "text/javascript" >
//设置两个cookie
document.cookie= "userName=admin; password=admin" ;
//获取cookie字符串
var
strCookie=document.cookie;
//将多cookie切割为多个名/值对
var
arrCookie=strCookie.split( "; " );
var
userName;
//遍历cookie数组,处理每个cookie对
for ( var
i=0;i<arrCookie.length;i++){
var
arr=arrCookie[i].split( "=" );
//找到名称为userName的cookie,并返回它的值
if ( "userName" ==arr[0]){
userName=arr[1];
break ;
}
}
alert(userName);
</script>
|
指定可访问cookie的路径
默认情况下,如果在某个页面创建了一个cookie,那么该页面所在目录中的其他页面也可以访问该cookie。如果这个目录下还有子目录,则在子目录中也可以访问。例如在www.xx.com/html/a.html中所创建的cookie,可以被www.xx.com/html/b.html或www.xx.com/html/
some/c.html所访问,但不能被www.xxxx.com/d.html访问。
为了控制cookie可以访问的目录,需要使用path参数设置cookie,语法如下:
document.cookie="name=value;
path=cookieDir";
其中cookieDir表示可访问cookie的目录。例如:
document.cookie="name=value; path=/admin";
就表示当前cookie仅能在admin目录下使用。
如果要使cookie在整个网站下可用,可以将cookie_dir指定为根目录,例如:
document.cookie="name=value; path=/";
Jquery设置cookie
jquery由于封装了很多东西,所以在操作时很方便,使用jquery对cookie操作时需要导入两个js文件
?
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<script type= "text/javascript"
src= "../js/jquery-1.8.2.js" ></script>
<script type= "text/javascript"
src= "../js/jquery.cookie.js" ></script>
$.cookie( ‘name‘ , ‘value‘ ); //设置cookie的值,把name值设为value
$.cookie( ‘the_cookie‘ , ‘the_value‘ , {expires: 7, path: ‘/‘ , domain: ‘baidu.com‘ , secure: true }); //新建一个cookie 包括有效期 路径 域名等
//expires 设置过期时间,上面为7天
//domain 设置生效域名,上面为baidu.com
//secure 是否启用加密,默认为false,此处设置了true
$.cookie( ‘name‘ , null ); //删除一个值
$.cookie( ‘name‘ ); //取出name的值
|
对cookie详细介绍:http://www.jb51.net/article/14566.htm
<<< 网页中如何利用原生js和jquery储存cookie
时间: 2024-10-25 21:30:38