在TCP断开HTTP会话持久性(Http session persistence on tcp di

2019-10-17 17:09发布

关于一个HTTP会话:它要么是通过cookie或URL重写实现。

由于HTTP 1.1使用持久连接,我认为一个会话无效TCP连接断开时。 或不?
我对这个很困惑,因为以其它方式使用饼干VS URL重写不会是行为一样,对吗?我的意思是浏览器不会保存URL重写到磁盘的值的部分,是否正确?

此外,如果实在不行,我们怎么能编程当一个TCP连接复位无效在服务器上?有这样如听者在Tomcat中?

Answer 1:

由于HTTP 1.1使用持久连接,我认为一个会话无效TCP连接断开时。 或不?

这是错误的。

在Java中的会话cookie的通过,通常(Tomcat的,码头等)来实现。 称为JSESSIONID = 1234567(数是随机生成的,并且识别该会话)甲cookie被从服务器设置在所述第一响应,则它得到存储在浏览器,并且被发送回服务器为每个后续连接。 此cookie通常有30分钟的默认生存期,当TCP连接被中断生存。 这使得服务器能够识别在不同的连接用户。

URL重写意味着每个URL包含JSESSIONID作为URL的一部分,在服务器端没有什么变化,只是JSESSIONID值从URL,而不是比从cookie读取。

如果TCP连接被关闭后的饼干丢了,这是完全无用的。 想象一下,基于持续TCP连接上的聊天系统:你需要一个cookie,如果你可以简单地识别从绑定到插座的标识的连接? 不......正是因为你需要跨多个连接跟踪用户的Cookie是有用的。

由于HTTP 1.1使用持久连接,

他们是持久的,在含义的第一请求(HTML页面)后,相同的连接可以重复使用也发送其他资源(图片,CSS,JavaScript的,等等)。 和浏览器保持连接打开了一段时间后,以避免重现的情况下,一个新的连接用户点击另一个链接。 这只是一个优化,这并不意味着,当你在浏览器中打开一个URL,连接保持活着的你在同一网站上放置的时间。

此外,如果实在不行,我们怎么能编程当一个TCP连接复位无效在服务器上?有这样如听者在Tomcat中?

在服务器上,你可以随时失效会话调用session.invalidate() 如果你想在每次提出要求时失效会话,那么你根本不需要的会话。

饼干也可以在通过JavaScript客户端失效。

我对这个很困惑,因为以其它方式使用饼干VS URL重写不会是行为一样,对吗?我的意思是浏览器不会保存URL重写到磁盘的值的部分,是否正确?

URL重写,Cookie是禁用的作品。 基本上,每一次你点击一个链接,该JSESSIONID时间=被附加到URL,那么服务器会识别用户,并且所有的后续环节将继续具有相同JSESSIONID在服务器上生成。 以这种方式,每POST或GET请求将包含用户(会议)的识别。

该Cookie工作在相同的方式,只是不是在URL被硬编码,它被嵌入的头信息的HTTP请求,这是通过自动浏览器(除非它已被禁用)。

这并不意味着它被保存在磁盘(目的是什么?),它只是保持它在内存中,会话cookie(当你关闭浏览器或30分钟后到期)。

您可以设置更长的续航时间为一个cookie; 在这种情况下,浏览器中存储更长时间的饼干。 但通常这些都不是“会话cookie”,但使用Cookie来标识特定用户(如UUID)。 从UUID的cookie,那么你可以在同一用户重新连接创建一个新的会话cookie。

这次会议,是用来跟踪谈话的。 用户关闭浏览器,谈话结束。 如果有像UUID永久性Cookie,那么您可以使用该cookie来创建一个新的对话和新的会话绑定到你之前遇到了相同的用户。



文章来源: Http session persistence on tcp disconnect