1、session是在服务器端保持状态的方案,而cookie机制则是在客户端保持状态的方案。
2、cookie又叫会话跟踪机制,每打开一次浏览器到关闭浏览器就是一次会话。此时服务器无法从链接上跟踪会话,cookie可以跟踪会话,因为可以弥补http无状态协议的不足。
3、cookie会话又分为持久cookie和会话cookie。会话cookie跟着浏览器的关闭而销毁,持久化cookie就跟商品一样有个保质期,关闭浏览器后,不会自动销毁,知道过了设定的过期时间,cookie才会过期。
以登录京东为栗子,客户端做一个登录请求,传用户名和参数给服务器,那么服务器就需要判断用户是否存在,session一般放用户id和用户名**(sesssion区下有一个session区,session区放了N多session)**,存放了用户name,id
服务器返回登录成功的消息,响应的header,还返回一个uid以及sessionid ,sessionid为session区的对应的用户id。浏览器接收到服务器的响应之后,只要响应包含了set cookie则就会在本地的C盘目录下创建一个文件,这个文件存了2个数据,即uid session id以及域名
当我们访问添加购物车请求时,就会检测本地文件也有数据的是属于jd.com,就会把这个本地文件添加到添加购物车请求的header里,然后传到服务端,服务端然后会检测有没有cookie,如果没有cookie,则是没有登录;如果检测到有cookie,则就会去查找session区的uid跟sessionid与cookie的uid跟sessionid是否一致,一致的话就是成功了,则判断这个用户是有效的。(即检测到session id为1234,在session区中找到1234对应的session,从而判断用户为admin)
4、两者的相互依赖关系:
session依赖cookie来识别session_id。
5、安全性:
因为 SESSION 数据保存在服务端,所以 SESSION安全性比Cookie 高。
6、尺寸大小:
SESSION 基本上没有大小限制,COOKIE 保存的内容比较小,具体由浏览器决定。
7、服务器性能:
SESSION 对服务器的压力会更大一些,而 Cookie 放在客户端,所以对服务器基本没影响。