是什么
- web服务器存储在你本地磁盘的一个小的文本文件
- cookie记录了你的用户名,密码,浏览的网页等
属性
- Expires ,Max Age:
- 都用来指定cookie的过期时间;
2. Expires在HTTP/1.0中定义。max-age在HTTP/1.1中才有定义;
3. Expires指定一个绝对的过期时间(GMT格式)。max-age 指定的是从文档被访问后的存活时间,这个时间是个相对值(比如:3600s),相对的是文档第一次被请求时服务器记录的Request_time(请求时间),
- Domain和Path
Domain是域名,Path是路径,两者加起来就构成了 URL,Domain和Path一起来限制 cookie 能被哪些 URL 访问。
- size
cookie的大小
- Secure
Secure选项用来设置cookie只在确保安全的请求中才会发送。当请求是HTTPS或者其他安全协议时,包含 Secure选项的
cookie 才能被发送至服务器。
- httpOnly
设置cookie是否能通过 js 去访问
客户端设置cookie
方法:
document.cookie=“name=123”;
注意:
document.cookie="name=syl; age=18"
这样的话只有name生效,即每次只能设置一个。因此需要封装或者多次调用。
封装:
//设置cookies function setCookie(name,value,MyDay){ var ExDate = new Date(); ExDate.setDate(ExDate.getDate() + MyDay);//如果需要时间的话以这样获取。 document.cookie = name + "=" + value + ";expires=" + ExDate; } //获取cookies function getCookie(name){ //例如cookie是"username=abc; password=123" var arr = document.cookie.split('; ');//用“;”和空格来划分cookie for(var i = 0 ;i < arr.length ; i++){ var arr2 = arr[i].split("="); if(arr2[0] == name){ return arr2[1]; } } return "";//整个遍历完没找到,就返回空值 } //删除cookies function removeCookie(name){ setCookie(name, "1", -1)//第二个value值随便设个值,第三个值设为-1表示:已经过期。 }
缺点
- 每个特定域名下的cookie数量有限,E6或更低版本最多20个cookie,IE7及之后可以有50个cookie,firefox最多50个cookie;
- 存储量太小,只有4KB;
- 每次HTTP请求都会发送到服务端,影响获取资源的效率;
- 安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。;