[Join02]关于session的理解

关于session的理解

关于session其实要从HTTP协议说起,由于HTTP协议是无状态的协议,也就是说客户端每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况。
用购物车来理解这个无状态:如果是没有session的纯HTTP协议,首先你使用用户名和密码登录到了你的购物车,完成了一次对服务器的请求,然后你想要在购物车添加一个商品,那么你就必须再次对自己的身份进行验证,因为这其实是另一次对服务器的请求,虽然你在之前已经进行了验证,但由于服务端已经结束了对上次请求的反应,服务端对上次的登陆没有记忆,因此你对购物车的操作就必须带着自己登陆的状态。
这样无状态的访问和请求无疑是相当繁琐的,而且每次登录都需要与底层的数据库进行交互,对性能有很大的浪费。通过简单的分析,我们可以发现最好的方式应该是:用户登陆后,可以对购物车进行一系列的连贯操作,直到用户退出。而session机制就实现了这一过程。
用户第一次对服务器发出请求,服务器为用户创建一个用户专属的sessionID用来对用户进行标识和跟踪,而且服务器会讲这个sessionID保存在文件或数据库等。

cookie在session机制中的作用

cookie是用来保存客户端信息的一种机制,用来保存服务器返回的客户端的相关信息。我们已经知道,在客户端向服务器发送第一次请求的时候,服务器会生成一个sessionID并保存起来。其实服务端还会将这个sessionID返回给客户端,由cookie进行保存。客户端每次访问服务器都会将cookie包装在请求中发送给服务器,因此客户端之后的每次请求,都可以被服务端跟踪。
这个过程大概如下图在这里插入图片描述

参考链接:session实现原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值