这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记
写在开头
本文主要是自己根据课程和项目对会话交互提出的一些反思
什么是会话交互
在本人的理解中,会话交互就是使用cookie和session在前后端之间进行业务逻辑上的交互通讯
cookie
cookie是什么?
cookie可以理解是服务器暂存在客户端的文本信息(.txt文件)。
cookie从哪来?
cookie从服务端来,它是由服务端生成的。 客户端可以清除cookie。
cookie往哪去?
A、cookie的归宿是客户端,由服务端生成后,发送给客户端;
B、它是存放在客户端的硬盘上的
cookie干什么用的?
cookie其实可以看成是http协议的一个扩展,因为http协议是无状态的协议,服务器无法识别客户端,cookie可以帮助服务器辨别客户端,以便它们之间更好地通信。 通俗地讲,cookie就类似一个通行证,每次客户端向服务器发送请求时,带上这个通行证,服务器就能通过这个同行证,准确地确认客户。
session
session是什么?
如果把cookie比作是服务器发给客户端的通行证,那么,可以把Session理解为程序在服务器上建立的一份客户档案,记录的是客户的状态等信息。
session从哪来?
A、session是服务端为客户端开辟的,它是服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法。
B、生成session的同时,也会生成唯一的sessionID与之对应,类似于键值对的形式{sessionID:session}。
session往哪里去?
A、session是存放在服务端的,是服务端开辟的空间存储的,是存在内存中的;
B、当会话关闭时,session会被清除;
C、session的默认失效时间是20分钟,服务器会把长时间没有活动的session从服务器内存中清除。
session有什么用?
还是因为http是无状态的协议,session也是为了保持客户端与服务器更好的连接状态,更好地通信。 通信过程,大致可以理解为: A、客户端—>服务端:客户端给服务端发送请求,服务端创建session,同时生成sessionID;
B、服务端—>客户端:服务端给客户端发送响应,并告诉客户端对应的sessionID;
C、客户端---->服务端,两者之间发请求,通信时,请求头里就可以带上sessionID,服务端就能更好地识别客户端。
举例
收集用户页面点击情况
1、前段在cookie中存储点击次数
2、在下一次交互时传至后端
用户登陆session存储
1、登陆后生成凭证存储至session
2、权限校验时查询session
用户登陆cookie存储
1、登陆后生成token存如cookie
2、权限校验时解析token
小结
session和cookie是概念性的抽象性的思想,并不是指单一的某个技术。例如session可以用redis可以用memorycache甚至可以用mysql。具体采用什么技术,应该根据业务情况而定。