首先这两种机制出现的原因都是因为http是无状态协议,第一次请求与第二次请求之间没有联系,所以分别在客户端和服务器的位置引进了这两个机制来缓存
cookies是服务器本地机器上存储的小段文本并随每一个请求发送至同一服务器,是客户端保存状态的方案,内容包括名字、值、过期时间、路径和域
eg:浏览器能记录你的登陆信息(用户名和密码)
在客户端第一次请求服务器时session自底生成session ID来标识这个HashTable并将其通过响应发送到浏览器,当浏览器第二次发送请求的时候会将前一次服务器响应中的session ID放在请求中一并发送,在服务器进行对比找到对应的HashTable
eg:在购物车添加了商品后客户端知道你添加了哪些商品,那么服务器是如何知道的呢?(session机制)
区别:
-
cookie在客户端,session在服务端
-
cookie的生命周期是随浏览器关闭结束,session的生命周期是与时间有关
-
cookie的大小受限制,session大小不受限(与服务器内存有关),session增多会给服务器带来压力
-
cookie是KV结构,session是类HashTable结构
-
安全起见,cookie对存储有要求,只存放在对应的服务器名下,不能跨域访问