Cookie 是一些数据, 存储于你电脑上的文本文件中。 javascript
当 web 服务器向浏览器发送 web 页面时,在链接关闭后,服务端不会记录用户的信息。 html
Cookie 的做用就是用于解决 "如何记录客户端的用户信息":java
当用户访问 web 页面时,他的名字能够记录在 cookie 中。web
在用户下一次访问该页面时,能够在 cookie 中读取用户访问记录。跨域
当浏览器从服务器上请求 web 页面时, 属于该页面的 cookie 会被添加到该请求中。服务端经过这种方式来获取用户的信息。浏览器
总的来讲,Cookie是保存在本地的一个字符串数据,浏览器每次访问服务器就会把对应页面的Cookie发送给服务器,这样服务器就能知道你是谁。安全
查看Cookie的方式:开发者工具(F12) -> Application -> 左侧Storage分组下的Cookies服务器
以name=value
的方式储存(名/值对),而且是明文的cookie
默认状况下,cookie的有效期间是当前会话(须要把整个浏览器都关闭会话就结束)dom
不能够跨浏览器(在IE中保存的cookie, 不能够在火狐中使用)
不能够跨域(跨域名)
每一个网页中存储cookie的个数(最多50)和每一个网站中存储cookie的个数都有限制(200)
有大小限制(4KB左右)
浏览器 | 大小(Byte 字节) | 数量(每一个域名) |
---|---|---|
IE6.0 | 4095 | 20 |
IE7.0/8.0 | 4095 | 50 |
Opera | 4096 | 30 |
Fire Fox | 4097 | 50 |
Safari | 4097 | 无限制 |
Chrome | 4097 | 53 |
在进行页面cookie操做的时候,应该尽可能保证cookie个数小于50个(除非兼容IE6),总大小 小于4KB
document.cookie = 'username="Evgni0n"';
在值的后面添加一个expires
字段,而且放一个GMT时间的值(js中放一个date对象就是GMT)。
var date = new Date(); date.setDate( date.getDate() + 7 ); // 7天过时 document.cookie = 'username="Evgni0n"; expires=' + date + ';';
在设置Cookie的时候一次性只能设置一个Cookie,不能批量设置,如:
document.cookie = 'username="Evgni0n"&age=18'
;这样设置的话,Name字段还是username
,而Value字段则会变成"Evgni0n"&age=18
没有提供方法删除Cookie,可是Cookie过时就会被删除,因此只要设置一个过去的时间Cookie就自动会被删除。
var date = new Date(); date.setDate( date.getDate() - 1 ); // 给一个过去的时间 document.cookie = 'username="Evgni0n"; expires=' + date + ';';
expires
: 生存周期
path
: 一个路径
domain
: 子域
secure
: 安全性
默认状况下,回话结束就会删除Cookie,可是给这个属性设置了一个时间(GMT格式)以后就会等到这个时间过时才删除Cookie,如document.cookie = 'username="Evgni0n"; expires=' + date + ';'
。
默认状况下,在同一个目录下文件能够调用;
http://www.evgni0n.com/page/1.html
设置的Cookie能够被 http://www.evgni0n.com/page/2.html
调用.但不能被 http://hanj.com/article/1.html
目录下的文件调用;
通常设为“/”,以表示同一个站点的全部页面均可以访问这个Cookie。
指定在该子域下才能够访问Cookie,例如要让Cookie在a.test.com
下能够访问,但在b.test.com
下不能访问,则可将domain设置成a.test.com
。
例如设成 ".evgni0n.com"
则在 .evgni0n.com
下的全部服务器下的文件均可以调用Cookie。
指定Cookie是否只能经过https协议访问,通常的Cookie使用HTTP协议既可访问,若是设置了Secure(没有值),则只有当使用https协议链接时Cookie才能够被页面访问。
如:document.cookie = 'username="Evgni0n"; expires=' + date + ';secure;'