Cookie和session 的区别
-
Http/Https 请求的特性:
-
无状态
张三和李四分别向一个web服务发送了一个http请求,此时web 后台并不能区分谁是张三,谁是李四,此种情况称之为无状态。
-
短连接
http一次请求一次响应,每次一通信完成后就会断开连接,此种情况称之为短连接
-
-
Cookie
试想有这样的场景,由于http协议的无状态特性,当两个不同的用户(张三/李四)向后台请求数据,但是如果两个人的权限不同,能看到的结果也应该不同,那后台如何区分谁是谁呢?
当client向server发送一次request, server会给client一个response,此时的response中会携带cookie,当client接收到这个cookie的时候,会默认保存到浏览器上。
当第二次这个client再次发起request的时候,在request中就会携带这个cookie,server就会知道这个client的信息了。
-
session
当server向client 生成一个cookie的时候,也会顺带存储一些其他信息(具体是哪些信息要根据实际的开发情况来确定)。将这些信息存储为字典类型。格式为:
cookie :{'id':1, 'name':'kenny'}
。 这些信息都会存储在server端,当client第二次发起请求的时候,通过它自身携带的cookie, 就可以查询到它的详细信息。此时server端就能知道client的身份信息了。 -
总结:
- cookie : 由server生成,保存在client端
- session: 由server生成, 并以cookie作为键,其他信息为值的方式,保存在server端,以供server验证client的身份信息。