Cookie入门

一、Cookie概览

Document对象含有一个Cookie属性:document.cookies

可以利用Cookie对象在用户的硬盘上持久的存储数据,
并且能够获取以这种方式存储的数据。

1、cookie的存储

Cookie的必要的部分:名字、值
name=value的形式
document.cookie = 'username=DaShen';
document.cookie = 'color=red';

2、cookie的读取

读取后是一个所有cookie组成的字符串,是一个name/value对的列表,数对间用分号分开。
因此写入cookie时,value值不能有分号、逗号或空白符,等号。
要读取特定的cookie的值,可以用方法String.indexOf(),String.substring()或者String.split()将字符串分割。

console.log(document.cookie);

3、cookie的过期时间

1、默认情况下 cookie是暂时存在的, 存在浏览器的内存中,当浏览器关闭时,cookie消失, cookie的生存期和浏览器相同
2、非默认情况下:cookie存在于浏览器的缓存目录的一个文件中

(1)方式一:兼容所有浏览器  expires (Date.toGMTString()/toUTCString())

 //设置cookie的生存期
    var now = new Date().getTime();
    var temp = now + 1000 * 60 * 60 * 24 * 7;
    var time = new Date(temp);
    console.log(time.toGMTString());
    document.cookie = 'cart=100;expires=' + time.toGMTString();
(2)方式二:支持现代浏览器(老版本ie无效)  max-age(秒)
document.cookie = 'logined=true;max-age=' + 60 * 60 * 24 * 7;

4、cookie的编码和解码

cookie只能处理拉丁字符,因此一般情况下:
在写入之前组要用JavaScript的核心全局函数encodeURIComponent()对写入的值进行编码。
并且读取时使用相应的decodeURIComponent()进行解码

编码:

document.cookie = 'username=' + encodeURIComponent('大神');
解码:
console.log(decodeURIComponent(document.cookie));

二、维护cookie

1、修改cookie

重新设置cookie的值即可

2、删除cookie

针对key设置一个过期时间, value的值可以任意或为空
document.cookie = 'logined=true;max-age=0';
    document.cookie = 'cart=100;expires=' + new Date().toGMTString();

三、cookie的属性

1、属性

key、value、expires(max-age)、path、domain、secure
必要:key、value
可选: expires(max-age)、path、domain、secure

2、cookie的一致性

当domain、path、secure、key有任何一个不一致的时候,cookie就不是同一个cookie
(1)修改path:
默认情况下,位于父路径的文件不能读取子目录的文件中设置的cookie的值。
同一个站点,不同目录下的同名cookie是互相独立的。
如果要在不同级别的路径下共享cookie,需要制定相同的path值
document.cookie = 'logined=true;max-age=0';
    document.cookie = 'cart=100;expires=' + new Date().toGMTString();

(2)domain
只能从子域名改到父域名,其他修改不可以
如位于server1.example.com 和 server2.example.com的网页需要共享cookie
则设置他们的domain值都为example.com。

例如:如果当前代码在xxx.jd.com下执行,那么可以执行如下的修改
document.cookie = 'color=blue;path=/;domian=jd.com';

(3) secure
Secure=true
指定在网络上如何传输cookie
默认是不安全的cookie,可以通过普通的http协议传输。
如果设置为secure,则只能通过https或其他的安全协议传输。

四、局限性和安全性

1、cookie的局限性

  • 理论值限制在4kb
  • 不能存储敏感数据
  • RFC 2965标准规定浏览器最多保存300个cookie(现代浏览器允许cookie总数多于300个)
  • 为每个web服务器保存的cookie数不能超过20个

2、数据持久型和安全性

  • 使用客户端持久性的方式保存在硬盘上的数据时未加密的。
  • 任何形式的客户端持久性都不应该用于任何一种敏感信息。
  • 数据持久性是用于扩展用户体验的,并不是用于数据收集的。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值