在测试验证邮箱、注册逻辑时,出现验证码错误的问题。验证码是存放在session内的,在排除了逻辑代码的问题后,检查出这两次访问接口的sessionid并不一致,而在swagger测试接口时是一致的。因此我比较了swagger与ajax请求/响应头的区别,发现服务器返回了sessionid,ajax并未携带此sessionid:
问题出现在ajax,搜一下ajax如何手动携带cookie就可以了,就很容易解决了。最后我们来回顾一下session的工作流程:
Session是一种在Web应用程序中用于存储和管理用户数据的机制。它主要涉及到以下流程:
1、客户端向服务器发送请求。
2、服务器在接收到客户端请求之后,会为该会话生成一个唯一的sessionid,并将该sessionid存储在一个cookie中,然后将该cookie发送给客户端。
3、客户端在接收到服务器发送的response后,会自动保存该cookie,并在后续的请求中将该cookie包含在请求头中。
4、服务器在接收到客户端发送的后续请求时,会自动从请求头中提取sessionid,并使用该sessionid来查找该客户端的会话。
5、如果服务器找到了该会话,则会将该会话中存储的数据发送回客户端,以便客户端可以使用这些数据来执行操作。
6、如果服务器没有找到该会话,则会创建一个新的会话,并将该会话的sessionid存储在一个cookie中,然后将该cookie发送回客户端。
7、在客户端结束会话(例如关闭浏览器)时,浏览器会自动删除该cookie,从而结束该会话。
总的来说,Session的流程就是服务器生成一个唯一的sessionid,并将其存储在客户端的cookie中,以便服务器能够识别客户端的会话。服务器使用该sessionid来查找该客户端的会话,并使用该会话来存储和管理用户数据。客户端通过在请求头中包含该cookie来与服务器交互,并在会话结束时自动删除该cookie。
来源地址:https://blog.csdn.net/weixin_44512485/article/details/129368462