Cookie简介:
Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。
http和cookie的交互过程
大体流程:服务器向客户端发送cookie——浏览器将cookie保存——浏览器每次都向服务器提交cookie
SetCookie:"name=value;domain=.domain.com;expires=Sat,11 Jun 2016 11:29:42 GMT;HttpOnly;secure;"
// 其中name=value为必选项,其余为可选项
- name:一个唯一确定的cookie名称。通常来讲cookie的名称是不区分大小写的
- value:存储在cookie中的字符串值。最好为cookie的name和value进行url编码
- domain:可以访问该cookie的域名
- path:表示cookie作用的路径,默认情况下,cookie会和创建它的网页、其目录及其子目录下的网页和相关联
- expires:失效时间,表示cookie何时过期的时间戳(也就是何时停止向服务器发送cookie的时间戳)。如果不设置这个,那么该cookie只存储在RAM,即session cookies,将在浏览器关闭的时候删除所有cookie,当然浏览器页面设置这个时间,时间格式是GMT格式,如果客户端和服务端时间不一样,那么就会存在偏差
- max-age:与expires作用相同,用来告诉服务器还有多久过期(单位是秒)
- HttpOnly:设置后,浏览器无法通过document.cookie来显示或设置该cookie,无法通过脚本来获取,但依旧保存在浏览器目录中
- secure:设置后,只有在使用HTTPS的时候才会带上该cookie,而发送普通http请求则不会带上该cookie,但仍然可以在机器上看到该cookie
-
二.利弊
- 1.利处
- 可以在客户端上保存用户数据,例如购物车商品数据等,起到简单的缓存的作用,同时服务器还可以利用缓存在cookie中的数据,对其进行较为精准推荐
保存用户的登陆状态,用户进行登陆,登陆成功后,服务器生成特定的sessionID设置到cookie中,每次HTTP请求都会带上sessionID作为用户标识
2.弊处
仅仅采用cookie作为验证手段容易导致XSS或CSRF攻击
cookie由于未加密导致隐私信息泄露