Cookie存储

Cookie简介

Cookie是存储于访问者计算机中的变量,用来存放一些数据(用于在客户端存储会话信息。)

1、什么是Cookie:

①、是指某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据。

②、Cookie是浏览器提供的一种机制,它将document对象的Cookie属性提供给JS,可以由JS对其进行控制,而不是JS本身的性质。Cookie是存于用户硬盘的一个文件,这个文件通常推向与一个域名,当浏览器再次访问这个域名时,便使这个Cookie可用,Cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。

③、特点:

a:存储的大小有限制:一般浏览器规定同源下最多只能存储4KB大小;

b:cookie有过期时间,时间我们自己可以来设置,一般不超过一个月;

c:cookie不稳定,因为我们可以使用安全卫士或垃圾清理功能把cookie移除掉;

d:用户可以根据自己的需求,开启无痕浏览或者隐身模式,这样cookie就不能j进行存储了;

e:cookie不是严格意义上的本地存储,它和服务期之间是有关联的;

2、Cookie的形式:以键值对的性质保存以‘;’分隔name1=value1;name2=value2;

3、Cookie的属性组成

①、名称:一个唯一确定Cookie的名称,Cookie的名称必须经过URI编码;//name

②、值:储存在Cookie中的字符串值,值必须被URI编码;//vlaue

③、域名:Cookie对于哪个域是有效的,所有向该域发送的请求中都会包含这个Cookie信息。//.wrox.com

④、路径:对于指定域中的那个路径,应该向服务器发送Cookie。//当前目录/

⑤、失效时间:表示Cookie何时被删除额时间戳;//Mon,22-Jan-07 07:10:24 GMT

⑥、安全标志:指定后,Cookie只有在使用SSL连接的时候才发送到服务器。

例如://secure

Set-Cookie:name=value;expires=Mon,22-Jan-07 07:10:24 GMT;domain=.wrox.com;path=/;secure

4、Cookie的主要用途:

①、保存用户登录状态;

②、跟踪用户行为;

③、创建购物车;

④、实施民意测验;

5、优缺点

Cookie的优点:

①、持久性;

②、与JS仪器使用操作;

③、使用本地存储,可以优化网站性能,避免频繁触发AJAX请求。

Cookie的缺点:

①、可被禁用,不安全;

②、不同浏览器的Cookie不可共享(一个网站一个Cookie)

如何操作Cookie

1、将Cookie写入到客户端

function setCookie(name,value){

var Days = 30;

var exp = new Date();//创建日期对象,默认是在浏览器关闭之后过期。

exp.setTime(exp.getTime() +Days*24*60*60*1000);//设置失效日期为24小时*30=30天

document.cookie = name+"=" +escape(value) +";expires=" + exp.toGMTString() +";path = /;domain = baidu.com";

}

escape():函数可对字符串进行编码,目的是让它可以在所有的计算机上读取该字符串,其中ASCII字母、数字、@*/+ ,这几个字符不会被编码;

注释:ECMAScript v3 反对使用该方法,应使用decodeURI() 和 decodeURIComponent() 替代它。

getTime():返回距1970年1月1日之间的毫秒数;

setTime():以毫秒数设置Date对象,向1970/1/1添加毫秒数;

toGMTString():方法可根据格林威治时间(GMT),把Date对象转换为字符串,并返回结果。

2、读取客户端的Cookie

function getCookie(name){

var arr,reg = new RegExp("(^|)" +name+ "([^;]*)(;|$)");//正则匹配

return unescape(arr[2]);

else return null;

}

unescape() :是对escape()编码的字符串进行解码,解码之后的内容为字符串。

new RegExp(); 创建一个正则表达式对象,该对象有三个方法test()、exec()、compile()

3、删除Cookie

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() + ";/path = /";

}

调用示例:

setCookie("name","hayden");

alert(getCookie(name));

扩展:

encodeURI(): 函数可把字符串作为URI进行编码;

decodeURI(): 函数可对encodeURI()编码过的URI进行解码;

decodeURIComponent():函数可把字符串作为URI进行编码,解码范围比encodeURI()大

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180405G1ATTE00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券