cookie
cookie机制原理
Cookies是服务器在客户机上存储的数据,客户端每次请求都会携带cookie,服务端通过cookie可以识别用户状态。
cookie属性
- name/value:以key/value的形式存在
- comment:说明该cookie的用处
- domain:可以访问该cookie的域名
- Expires/maxAge:cookie失效时间。负数:临时cookie,关闭浏览器就失效;0:表示删除cookie,默认为-1
- path:可以访问此cookie的页面路径
- size:cookie的大小
- secure:是否以https协议传输
- version:该cookie使用的版本号
- HttpOnly:此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie,能防止XSS攻击。
session
- session是保存在服务端的一个类HashTable结构数据,用来识别用户的状态,这个数据可以保存在集群、数据库、文件中。
- 当客户端发出一个请求,服务器会先检查这个请求里是否包含session标识(sessionId)。如果已包含,则说明以前已经为此客户端创建过session,服务器就按照sessionId找到对应的session。如果客户端请求不包含sessionId,则为此客户端创建一个session和对应的sessionId,并将sessionId存在cookie返回。
- sessionid是服务器和客户端链接时候随机分配的,重复概率很小。
区别
- cookie和session都是用来识别用户身份状态会话方式
- cookie 数据存放在客户的浏览器上,session数据放在服务器上;
- cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全应当使用 session;
- session 会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能方面,应当使用cookie;
- 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个 cookie。
- 域的支持范围不一样,比方说a.com的Cookie在a.com下都能用,而www.a.com的Session在api.a.com下都不能用,解决这个问题的办法是JSONP或者跨域资源共享
image.png
使用场景
- 将登陆信息等重要信息存放为 session;
- 其他信息如果需要保留,可以放在 cookie 中。
网友评论