下面来举个老师经常说的例子来区分session和cookie:
我们把超市会员卡,比作session
超市会员卡 session
发卡者---超市管理员 创建者--服务器
它是一张会员卡 它是一个session对象
它有唯一的卡号 它有唯一的sessionID
超市规定,这张卡n天不用就会失效 开发人员设置,(有效期为60分钟,30分钟等)
超市会员卡,会记录在超市本子上或某软件上 session信息会存放在服务器中或者数据库中
超市本子损坏,或软件损坏,卡的信息就不见了 服务器重启或数据库清空,session也就没有了
超市提供注销会员卡的业务 开发人员可以提供注销session的功能
用户凭借自身身份来申请一个会员卡 用户登录服务器后,服务器便会生成一个session
会员卡办理好后,便会通过各种途径交到用户手中 用户登录成功后,服务器便会通过响应头,把sessionID传递给客户端
客户收到卡后,会把他放置到某个位置 客户端拿到这个sessionID后,会把sessionID放到浏览器的【cookie】中
下次来买东西可以直接带会员卡进行消费 下次登录时,可以把sessionID通过【请求头】携带给服务器
超市人员会检查你的卡是否有效 服务器判断客户端提供的sessionID是否【有效】
你的家人拿你的卡去消费,是可以的 小偷拿了你的sessionID去使用,也是可以的
简要概括:
用户登录----服务器便会创建一个sessionID,并返给客户端-----客户端接收到这个sessionID后,把它保存到浏览器的cookie中
1.用户登录成功后会立马创建一个session,并通过【响应头】中set--cookie属性,把session返回给客户端
2.浏览器接收到之后,把响应头中的set--cookie储存起来,储存到浏览器 的cookie中
3.之后浏览器每次发送请求时,都会把站点中的全部cookie通过【请求头】发送给服务器
cookie和session是如何配合来实现登录的:
1.用户一登陆,服务器便会生成一个session对象,并通过【响应头】中的set-cookie 把sessionID 发送给浏览器
2。浏览器收到sessionID会立马储存在cookie中,方便下次使用
3.服务器会根据客户端发来的sessionID来判断其有效性,如果失效则不能进行访问
用户注销或退出登录时,服务器会把sessionID置空,并返回一个空值给客户端
如果客户端通过set--cookie拿到了一个空值sessionID,便会删除sessionID
cookie的特点:
1.cookies是分站点的,各个站点之间是独立的
2.浏览器中的cookie是储存在浏览器的某个位置中的
3.浏览器通过set-cookie参数,对客户端的cookie进行管理,每次访问时,都需要把cookie发送给服务器
4.每个站点的cookie个数不超过50个,大小不超过4kb
session的特点:
1.session 是一个对象,是服务器产生的,保存在服务器的内存中的
2.session有自己的管理机制,如session的产生,超时,销毁等
3.sessionID是session中的一个对象,并且是唯一的,不会重复的
Token特点:
Token 也是由服务器产生的,存在服务器的内存或硬盘中
【用Token 来实现登录】
开发提供一个获取Token接口,根据用户名+密码,获取一个Token值
返回一个Token (字符串)
网友评论