我正在编写一个需要处理丢失连接的Web客户端。
如果使用HTTPS和Internet连接断开连接到服务器,服务器是否会丢失会话信息?
恢复Internet连接后,客户端是否需要重新登录服务器,还是依赖于服务器?
答案 0 :(得分:5)
通常,服务器确定会话的存在时间(通过定义会话超时)以及在单个请求之间如何保持会话(如果有的话)。服务器将带有会话信息(会话密钥)的cookie发送回客户端,因此当客户端发送包括会话cookie的下一个请求时,服务器知道要使用哪个会话。
说完了 - 两个请求之间没有信息,同时互联网连接是否丢失。只要服务器仍然有会话并且客户端仍然具有相应的cookie,一切都应该按预期工作。
另一方面,即使连接中没有中断,服务器和客户端都启动并运行,但没有相互通话(即没有请求),会话可能会因为简单而丢失服务器端超时。
因此,在服务器上,您可能会收到对受保护或需要某个会话状态的资源的请求 - 并且没有此类会话。在客户端,您总是会收到回复,表明需要登录。
两种情况都必须正确实施。
答案 1 :(得分:3)
HTTP协议本身是无状态,即每个请求都按原样提供,与以后的请求没有任何关系。
要解决此问题,您可以使用客户端Cookie。您的cookie可以保留会话状态标识符,可以在连接断开后将其发送回服务器以恢复以前的状态。
除此之外,您还可以构建一个处理会话持久性的会话管理模块。
答案 2 :(得分:1)
首先取决于你正在谈论的会话类型:
你可能没有预料到的简单答案。因为它取决于很多要点。
答案 3 :(得分:1)
正如其他人已经声明的那样,您可以使用SessionID“持久化”连接,建议将其存储在cookie中。大多数现代环境(如PHP和ASP.NET)都使用这种机制来处理丢失的连接。
有关实施安全会话管理的安全注意事项,请参阅https://www.owasp.org/index.php/Session_Management_Cheat_Sheet。
此外,您可以使用SSL执行的操作是使用客户端证书构建会话管理。用户由发给他的唯一证书识别。这具有客户端不必首先登录的优点。另一方面,您必须向每个客户端颁发客户端证书,这可能很复杂。
答案 4 :(得分:0)
使用cookie存储会话信息,一旦连接丢失,您可以轻松地从cookie中获取信息。使用条件调用cookie,即如果会话丢失,则调用cookie。使用Php在会话中存储信息并调用cookie